4
我正在运行一个全天候运行的脚本。它只是反复循环,很简单:Perl:运行“守护程序”并打印
while ($daemon) {
sleep 60;
chomp(my $currentDate = `date +%c`);
print LOG "-- Running trigger: $currentDate --\n";
system("$triggerCmd >> $daemonLog");
print LOG "-- Completed trigger test. --\n\n";
}
它工作正常。问题在于它不会打印最后一行(“完成的触发测试”),直到60秒睡眠后。它打印运行行,运行命令,打印命令输出,然后在打印“完成”之前等待60秒,然后再次打印“运行”行。
因此它下面的过程是这样的:
睡眠60秒
打印“运行触发”
运行触发,输出重定向
睡眠60秒
打印完成
打印运行
运行触发
但我想要它这样做:
睡眠60
打印“运行触发”
运行触发,输出重定向
打印“已完成”
睡眠60
我试着动睡眠命令到循环的结束,没没有什么不同。虽然这看起来很小,但它实际上是我一直在处理的一个问题,它会解决一些问题来解决它。我很接近地使用反引号来运行命令并捕获输出,然后打印输出,但是这导致了相同的行为。
那(IO :: Handle选项)做到了!非常感谢你。 – Justin 2010-10-28 20:17:52
@Justin:如果确实如此,请接受答案 – sebthebert 2010-10-28 23:39:59