我有一个perl进程,每天自动运行,需要大约20分钟芬兰语并将每个操作打印到stdout worht提到每个操作大约需要秒。
有时似乎stdout被卡住了,我需要点击回车才能让流程继续运行。
有人会遇到这样的问题/建议如何处理这个问题吗?
在我的代码快照下面:
foreach (<>) {
chomp;
if (validate($_) == 0) {
print "$_ validated with Success\n";
}
else {
print "$_ validated with failure\n";
}
}
答案 0 :(得分:1)
正如Bill Ruppert所写,您需要使用while (<>)
而不是foreach (<>)
,以便在读取每行输入后允许print
语句执行。
正如Joop Eggen所写,您需要确保标准输出不是以块为单位写入的,以确保在发出print
语句后立即显示每行输出。这可以通过设置$|
变量来完成。