未定义的子例程 CGI::remote_port
Undefined subroutine CGI::remote_port
为什么会出现此错误? server_port() 按预期工作,afaik REMOTE_PORT 也是一个有效的环境变量。
有没有其他方法可以获取客户端的端口号?
这是我的完整代码:
#!/usr/bin/perl -w
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use strict;
use Cwd;
#################################
my $time = localtime();
my $dir = cwd();
my $parameter = param('name');
my $q = new CGI;
my $addr = $q->remote_host();
my $request = $q->request_method();
my $port = $q->server_port();
print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Auth2</title>';
print '</head>';
print '<body>';
print "<h1> The time is $time </h1>";
print "<p> Current directory is $dir</p>";
print "<p> Request parameter: $parameter</p>";
print "<p> Remote address: $addr</p>";
print "<p> Remote port: $port</p>";
print "<p> Request method: $request </p>";
print '</body>';
print '</html>';
1;
man page 中记录了可用的方法,remote_port
似乎不是其中之一。
afaik REMOTE_PORT is a valid environment variable too.
如果它是一个环境变量,那么您可以简单地访问它:
my $port = $ENV{REMOTE_PORT};
除此之外,您根本不清楚为什么需要远程端口号,因为它可能只是远程系统临时端口范围内的任意数字。这也许也是不提供访问它的方法的原因。
为什么会出现此错误? server_port() 按预期工作,afaik REMOTE_PORT 也是一个有效的环境变量。
有没有其他方法可以获取客户端的端口号?
这是我的完整代码:
#!/usr/bin/perl -w
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use strict;
use Cwd;
#################################
my $time = localtime();
my $dir = cwd();
my $parameter = param('name');
my $q = new CGI;
my $addr = $q->remote_host();
my $request = $q->request_method();
my $port = $q->server_port();
print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Auth2</title>';
print '</head>';
print '<body>';
print "<h1> The time is $time </h1>";
print "<p> Current directory is $dir</p>";
print "<p> Request parameter: $parameter</p>";
print "<p> Remote address: $addr</p>";
print "<p> Remote port: $port</p>";
print "<p> Request method: $request </p>";
print '</body>';
print '</html>';
1;
man page 中记录了可用的方法,remote_port
似乎不是其中之一。
afaik REMOTE_PORT is a valid environment variable too.
如果它是一个环境变量,那么您可以简单地访问它:
my $port = $ENV{REMOTE_PORT};
除此之外,您根本不清楚为什么需要远程端口号,因为它可能只是远程系统临时端口范围内的任意数字。这也许也是不提供访问它的方法的原因。