2011-02-16 83 views
3

我發現在一段代碼類似這樣的:自動沖洗的問題

use IO::Handle; 
autoflush STDOUT 1; 
print ''; 

是「打印」的宗旨,以清空可能填充的緩衝區?

回答

2

print致電應該是一個浪費系統調用。 perlvar指出:「如果設置爲非零,則在當前選擇的輸出通道上每寫入一次或打印後立即強制刷新。」此示例中的代碼應打開autoflush,導致刷新,然後將註釋添加到STDOUT緩衝區並導致刷新。可能還有另一個打印原因,但我的猜測是,代碼的原始作者與bvr做了相同的假設,即在需要刷新自動刷新的調用之後,數據會留在緩衝區中。

6

print強制緩衝區中的所有文本(來自之前的打印)立即被輸出。代碼基本上禁用緩衝並刷新所有內容。