2013-05-02 63 views
4

如何在Perl中對緩衝區施加更多控制?我知道我可以使用autoflush來立即刷新緩衝區,否則我什麼也不做,讓Perl感覺像刷新一樣。如何在Perl中控制緩衝區刷新的時間

但是,我可以更改緩衝區大小嗎?或者我可以每隔30秒強制沖洗一次?

我想知道如何爲文件句柄或STDOUT做到這一點。我試過了IO::Handle文檔,但一直沒有弄清楚我需要什麼。

+0

您可以獲得STDOUT的文件句柄對象,例如由'我的$ fh = *標準輸出{IO}'。 – amon 2013-05-02 19:27:25

回答

9

但是,我可以更改緩衝區大小嗎?

5.14之前,每個文件句柄緩衝區的大小是4096字節。

從5.14開始,在構建Perl時(通過傳遞-Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=num_bytesConfigure),可以選擇每個文件句柄緩衝區的大小。默認值是8192字節。

或者我可以每30秒鐘強制沖洗一次嗎?

您可以隨時強制刷新。

use IO::Handle qw(); # Not needed in 5.14+ 
$fh->flush(); 
STDOUT->flush(); 
+0

添加了更多信息。 – ikegami 2013-05-02 19:34:48