未定义的子程序CGI :: remote_port

时间:2015-11-18 07:08:34

标签: perl cgi

为什么我收到此错误? 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;

1 个答案:

答案 0 :(得分:4)

可用的方法记录在man page中,看起来remote_port不是其中之一。

  

afaik REMOTE_PORT也是一个有效的环境变量。

如果它是环境变量,那么您只需将其作为一个访问:

my $port = $ENV{REMOTE_PORT};

除此之外,还不清楚为什么你需要远程端口号,因为它可能只是远程系统的临时端口范围内的任意数字。这也许是没有提供访问它的方法的原因。