我需要禁用HTTP响应的渐进式缓冲。
我使用文件句柄类在Perl中使用它:
$|=1;
$TIE = tie(*STDOUT,__PACKAGE__);
Print语句存储在一个数组中,并通过以下方式检索:
$buffer = tied *STDOUT;
$buffer = join('', @$buffer);
undef $TIE;
untie(*STDOUT);
如果HTTP响应为text/html
,则会在浏览器中正确显示。
但是,对于二进制流,我在binmode
解开后无法设置STDOUT
,并且内容已损坏。
如果我将HTTP响应保存到文件中,或者如果我不使用文件句柄类,则会保留二进制数据。
有关如何强制原始编码的任何建议?感谢。
答案 0 :(得分:2)
像这样的工作吗?
use strict;
use warnings;
use IO::Handle;
my $io = IO::Handle->new;
my $fh = $io->fdopen(fileno(STDOUT),"w");
$fh->autoflush(1);
my $TIE = tie( $fh ,__PACKAGE__);
sub TIESCALAR { };
binmode($fh);
print $fh "Foo";