未定义的子例程 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};

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