Perl使用解压缩将二进制数据拆分为块

时间:2012-06-01 12:50:51

标签: perl binary chunked-encoding unpack chunked

我正在使用Transfer-Encoding: chunked来编写HTTP响应。

通过以下内容将响应拆分为:

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

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

当内容类型为text/html时,此功能正常,但它正在破坏二进制数据,例如application/pdf

可以unpack用于将二进制数据拆分成相等的长度吗?

2 个答案:

答案 0 :(得分:1)

仍然不确定为什么unpack在这种情况下失败了,但我偶然发现了一个解决方案。

如果我使用内存文件操作响应,unpack可以正常工作:

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

有关其原因的任何见解?

答案 1 :(得分:0)

二进制数据完全正常。问题出在其他地方。 (你binmode所有相关的句柄了吗?)