如何控制Perl中缓冲区刷新的时间

时间:2013-05-02 19:10:51

标签: perl

如何在Perl中对缓冲进行更多控制?我知道我可以使用autoflush立即刷新缓冲区,或者我什么都不做,让Perl在感觉就好时冲洗。

但我可以更改缓冲区大小吗?或者我可以每隔30秒强制冲洗一次吗?

我想知道如何为文件句柄或STDOUT执行此操作。我已尝试浏览IO::Handle文档,但未能弄清楚我需要什么。

1 个答案:

答案 0 :(得分:9)

  

但我可以更改缓冲区大小吗?

在5.14之前,每个文件句柄缓冲区的大小为4096字节。

从5.14开始,构建Perl时可以选择每个文件句柄缓冲区的大小(通过将-Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=num_bytes传递给Configure)。默认值为8192字节。

  

或者我可以每隔30秒逼一次冲洗吗?

您可以随时强制冲洗。

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