我有大量的脚本需要执行。为了调试,我喜欢观察这些脚本的输出。
通常print qx/foo/
收集foo的stdout输出,直到foo执行完毕,然后将其打印出来。
我想把它流出来,这样我就可以看到foo的输出,和捕获foo的输出在一些标量
理想:
$cmd = "foo";
$result = stream_and_store($cmd);
我相当肯定有一些复杂的方法,包括一些漂亮的CPAN模块。
我希望能够在基础Perl 5.8.8(是的,过时了,但这就是环境)中做到这一点,而不添加其他依赖项。
小心许愿:
$output = `somecmd | tee /dev/tty`;
my $result = '';
open my $proc, '-|', "foo";
while (<$proc>) {
print $_;
$result .= $_;
}
这种形式的open
命令在后台启动一个进程,并使其输出在文件句柄$proc
中可用。