gpt4 book ai didi

解开文件句柄后,Perl 无法 Binmode STDOUT

转载 作者:行者123 更新时间:2023-12-01 00:44:53 24 4
gpt4 key购买 nike

我需要禁用 HTTP 响应的渐进式缓冲。

我已经使用文件句柄类在 Perl 中进行了这项工作:

$|=1;
$TIE = tie(*STDOUT,__PACKAGE__);

打印语句存储在一个数组中,并通过以下方式检索:
$buffer = tied *STDOUT;
$buffer = join('', @$buffer);
undef $TIE;
untie(*STDOUT);

如果 HTTP 响应是 text/html ,它在浏览器中正确显示。

但是,对于二进制流,我无法设置 binmodeSTDOUT解开后,内容已损坏。

如果我将 HTTP 响应保存到一个文件,或者如果我不使用文件句柄类,二进制数据将被保留。

关于如何强制原始编码的任何建议?谢谢。

最佳答案

像这样的工作?

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";

关于解开文件句柄后,Perl 无法 Binmode STDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com