首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解开文件句柄后,Perl无法Binmode STDOUT

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

Stack Overflow用户
提问于 2012-06-01 15:00:21
回答 1查看 444关注 0票数 4

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

我使用一个文件句柄类在Perl中实现了这一点:

代码语言:javascript
复制
$|=1;
$TIE = tie(*STDOUT,__PACKAGE__);

打印语句存储在数组中,并通过以下方式进行检索:

代码语言:javascript
复制
$buffer = tied *STDOUT;
$buffer = join('', @$buffer);
undef $TIE;
untie(*STDOUT);

如果HTTP响应为text/html,则会在浏览器中正确显示。

但是,对于二进制流,我不能在STDOUT上设置解绑后的binmode,并且内容已损坏。

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

关于如何强制raw编码有什么建议吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-01 15:17:03

像这样的东西可以工作吗?

代码语言:javascript
复制
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";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10845787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档