在使用Perl编写CGI应用程序时,请使用以下代码来记录访问者.
(my $digits = #ENV{'REMOTE_ADDR'}) =~ s/\.//g;
my $address = pack("C4", $digits);
Run Code Online (Sandbox Code Playgroud)
在perldoc,
打包模板,列表
"C4"应该是模板.这是什么意思?
例如,您的代码看起来像是来自代码的错误提取,用于将点分四格式的IP地址转换为可传递给socket调用的四个字节的字符串.
假设这#ENV是一个错误$ENV,你的代码从虚线四边形中删除点,给你一个4到12位的字符串.然后(隐式地)将这些数字解释为单个整数,将其最低8位放在结果的第一个字节中,并用零填充其余数字(因为pack为三个缺失列表元素提供空值,然后将其解释为零) ).
为什么要将二进制IP地址打印到日志文件中,我不会尝试猜测.但是给出的代码几乎是胡说八道.如果您确实需要二进制IP地址,我建议
use Socket 'inet_aton';
my $address = inet_aton($ENV{REMOTE_ADDR});
Run Code Online (Sandbox Code Playgroud)