使用Perl和HTML::Mason的表单提交者的IP地址(远程IP地址)

使用Perl和HTML::Mason的表单提交者的IP地址(远程IP地址),html,perl,mason,Html,Perl,Mason,我正在使用提供包含表单的网页。填写并提交表单时,我想知道远程客户端的IP地址 我试着在中打印$r->headers\u,但我发现 Apache2::Request=SCALAR(0x1961ba0)->headers_in 我是否使用了错误的参数?对于CGI应用程序,远程IP地址位于$ENV{remote\u ADDR}中 如果您使用的是mod_perl,则等效值位于$r->connection->remote_ip,其中$r是您的Apache2::Request对象 如果方法调用用双引

我正在使用提供包含表单的网页。填写并提交表单时,我想知道远程客户端的IP地址

我试着在中打印
$r->headers\u,但我发现

Apache2::Request=SCALAR(0x1961ba0)->headers_in

我是否使用了错误的参数?

对于CGI应用程序,远程IP地址位于
$ENV{remote\u ADDR}

如果您使用的是mod_perl,则等效值位于
$r->connection->remote_ip
,其中
$r
是您的
Apache2::Request
对象

如果方法调用用双引号括起来,则将生成显示的输出,如

print "$r->headers_in\n"
如果删除引号,它将正常工作

print $r->headers_in, "\n"
方法中的
$r->headers\u返回一个对象。您可以使用
do
方法和合适的子例程(必须返回
1
才能通过表继续迭代)转储此文件的内容,如下所示:

my $table = $r->headers_in;
$table->do(sub {
  printf "%s: %s\n", @_;
  1;
});

谢谢,这是一个基本问题。如何打印APR::Table=HASH(0x59d0b30)的内容,这是print$r->headers\u in给我的。我想看看$r->headers\u的不同部分在哪里?A.newbie@mamesaye:我在回答中添加了描述如何在
中打印
标题的返回值的内容。thkx,节省了我几个小时,你知道你的东西