从qx子进程流式输出标准输出



我有大量的脚本需要执行。为了调试,我喜欢观察这些脚本的输出。

通常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中可用。

最新更新