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