【发布时间】:2013-08-22 22:59:21
【问题描述】:
我正在使用Test::More 编写一些测试,我正在测试的功能之一打印到STDERR。我想测试输出到STDERR,但我有点不确定如何做到这一点。我知道我很接近了。这有效:
use strict;
use warnings;
use feature qw(say);
close STDERR;
open STDERR, ">", \my $error_string;
say STDERR "This is my message";
say qq(The \$error_string is equal to "$error_string");
打印出来:
The $error_string is equal to "This is my message
"
但是,我不想关闭 STDERR。我只是想复制它。
我试过了:
use strict;
use warnings;
use feature qw(say);
open my $error_fh, ">", my $error_string;
open STDERR, ">&", $error_fh;
say STDERR "This is my message";
close $error_fh;
say qq(The \$error_string is equal to "$error_string");
但是,$error_string 是空白的。
我做错了什么?
【问题讨论】: