加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Untie Filehandle后Perl无法Binmode STDOUT

发布时间:2020-12-16 06:14:37 所属栏目:大数据 来源:网络整理
导读:我需要禁用HTTP响应的渐进式缓冲. 我使用文件句柄类在Perl中使用它: $|=1;$TIE = tie(*STDOUT,__PACKAGE__); Print语句存储在一个数组中,并通过以下方式检索: $buffer = tied *STDOUT;$buffer = join('',@$buffer);undef $TIE;untie(*STDOUT); 如果HTTP响
我需要禁用HTTP响应的渐进式缓冲.

我使用文件句柄类在Perl中使用它:

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

Print语句存储在一个数组中,并通过以下方式检索:

$buffer = tied *STDOUT;
$buffer = join('',@$buffer);
undef $TIE;
untie(*STDOUT);

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

但是,对于二进制流,我无法在解开后在STDOUT上设置binmode,并且内容已损坏.

如果我将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";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读