-1
我正在寫另一個捕獲程序的輸出一個perl程序,我注意到,在一個while <FILEHANDLE>
環(所以$_
包含行讀),會出現以下情況:
open XIN, "-|", "test_xsr"; # not getting in real time! FIX
while (<XIN>) {
print ".";
}
打印
....
後程序完成而
open XIN, "-|", "test_xsr"; # not getting in real time! FIX
while (<XIN>) {
print $_;
}
打印
1
2
3
done
實時而在程序運行。 (雖然我正在測試,程序總是產生該輸出。)
爲什麼會出現這種不一致?
是否有可能實時處理輸出沒有print
ing $_
?
http://perl.plover.com/FAQs/Buffering.html – toolic
我敢肯定,必須有一個規範的答案呃那麼說,但我找不到它。 – Sobrique
這不是關於緩衝* input *文件句柄的行緩衝。這是關於你從'XIN'讀到的行最後換行的事實。 *令人震驚*,我知道。所以,當你打印它們時,輸出會被刷新。然而,如果你只是打印點,輸出坐在緩衝區中,直到它被填充。 –