如果我有这个perl应用程序:
print `someshellscript.sh`;
打印一堆东西并需要很长时间才能完成,如何在执行shell脚本的过程中打印输出?
看起来Perl只会在完成时打印someshellscript.sh结果,有没有办法在执行过程中进行输出刷新?
答案 0 :(得分:16)
你可能想要做的是这样的事情:
open(F, "someshellscript.sh|");
while (<F>) {
print;
}
close(F);
这会运行someshellscript.sh
并打开一个读取其输出的管道。 while
循环读取脚本生成的每行输出并打印出来。有关详细信息,请参阅open文档页面。
答案 1 :(得分:3)
这里的问题是,使用反引号转义会将脚本存储到字符串中,然后将其打印出来。因此,没有办法用印刷品“冲洗”。
使用system()命令应该连续打印输出,但是您将无法捕获输出:
system "someshellscript.sh";