2011-01-23 33 views
0

我有以下代码:为什么这个HTTP头没有打印?

Net::Pcap::loop($pcap, -1, \&proccess_packets, ''); 
sub proccess_packets { 
    my ($user_data, $header, $packet) = @_; 
    my $ip_packet = NetPacket::Ethernet::strip($packet); 
    my $tcp_packet = NetPacket::IP::strip($ip_packet); 
    my $tcp_obj = NetPacket::TCP->decode($tcp_packet); 
    if ($tcp_obj->{data}) { 
     my $request = HTTP::Request->parse($tcp_obj->{data}); 
     my %headers = split /[:\n]/, $request->headers_as_string; 
     print Dumper($headers{'Accept-Language'}); # this line is printed 
     print $headers{'Accept-Language'};   # this line is not printed 
    } 
} 

可能有人有,为什么这条线被打印任何解释:

print Dumper($headers{'Accept-Language'}); 

,为什么这不是印刷:

print $headers{'Accept-Language'}; 

可能是什么这里的问题?有人可以提供建议吗?它与libpcap的回调机制有关吗?

+2

由于以下原因,您在那里的代码不会编译。请发布您正在使用的确切代码。 – 2011-01-23 22:20:04

回答

2

我没有运行你的代码,但是对于我来说,使用split的头处理看起来是错误的。相反,只需使用HTTP :: Request继承的header方法即可。