【问题标题】:Undefined subroutine CGI::remote_port未定义的子程序 CGI::remote_port
【发布时间】:2015-11-18 15:23:15
【问题描述】:

为什么会出现此错误? 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;

【问题讨论】:

标签: perl cgi


【解决方案1】:

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

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

如果它是一个环境变量,那么你可以简单地访问它:

my $port = $ENV{REMOTE_PORT};

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 2013-06-25
    • 2019-08-11
    • 2017-02-23
    • 1970-01-01
    • 2013-11-09
    • 2015-10-22
    相关资源
    最近更新 更多