Почему этот заголовок HTTP не печатается? - PullRequest
0 голосов
/ 24 января 2011

У меня есть следующий код:

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?

1 Ответ

2 голосов
/ 24 января 2011

Я не запускал ваш код, однако для меня обработка заголовка с split выглядит неправильно. Вместо этого просто используйте метод header, который наследует HTTP :: Request.

...