我有大量需要执行的脚本。我喜欢在调试时看到所述脚本的输出。
通常,print qx/foo/
会收集foo的stdout输出,直到foo完成,然后打印出来。
我想将它流出来,以便我可以看到foo的输出,和在某个标量中捕获foo的输出。
理想情况下:
$cmd = "foo";
$result = stream_and_store($cmd);
我有理由相信有一些复杂的方法,包括一些漂亮的CPAN模块。
我希望能够在基础Perl 5.8.8(是的,古董,但这就是环境)中做到这一点,而不添加其他依赖项。
答案 0 :(得分:3)
小心你的意愿:
$output = `somecmd | tee /dev/tty`;
答案 1 :(得分:3)
my $result = '';
open my $proc, '-|', "foo";
while (<$proc>) {
print $_;
$result .= $_;
}
open
命令的这种形式在后台启动一个进程,并在文件句柄$proc
中提供其输出。