2

私はTransfer-Encoding: chunkedHTTP応答を書くために使用しています。

応答は、次のように分割されます。

my $template = "a$buffer_size" x int(length($response)/$buffer_size) . 'a*';

foreach my $buffer (unpack $template, $response){
    ...
}

コンテンツ タイプが の場合、これは正常に機能しますがtext/htmlapplication/pdf.

unpackバイナリデータを等しい長さに分割するために使用できますか?

4

2 に答える 2

1

unpackこのコンテキストで失敗する理由はまだわかりませんが、解決策を見つけました。

メモリ内ファイルで応答を操作すると、unpack正しく動作します。

my $resp;
open (my $fh, '>', \$resp);
my $fh_old = select($fh);
print $response;
close $fh;
select($fh_old);
$response = $resp;

なぜこれが機能するのかについての洞察はありますか?

于 2012-06-01T19:45:52.713 に答える
0

それはバイナリデータで完全にうまく機能します。問題は別のところにあります。(あなたはbinmodeすべて関連するハンドルをしましたか?)

于 2012-06-01T16:32:34.990 に答える