2011-01-23 12 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

あなたが持っているコードは、いくつかの理由でコンパイルされません。あなたが作業している正確なコードを投稿してください。 –

+0

こんにちはエリック私はあなたを理解していますが、正確なコードは約1K行です。このコードスニペットを再度改訂して、もっと明確になることを期待しています。 – johnny2

+2

[サンプルコード](http://sscce.org)は自己完結型で完全でありながら簡潔であり、テスト可能です。最小のテストケースを作成するためにサンプルを記入するだけで、オリジナルを投稿する必要はありません。この問題は、表示されていないコードと関係している可能性があります。サンプルを完成させるためにコードを追加する必要がある場合は、テストしているコードと同じ動作をしない可能性があります。また、あなたが見ているアウトプットは何ですか?あなたが期待しているアウトプットは何ですか? – outis

答えて

2

私はあなたにコードを実行しませんでしたが、私には分割によるヘッダ処理が間違っています。代わりに、単にHTTP :: Requestが継承するメソッドheaderを使用します。