STDOUT-> autoflush(1)在Perl中做了什么?

时间:2018-01-23 23:34:17

标签: perl

我在Perl中找到了有关autoflushing的各种信息,但是找不到任何一个格式如下的行:

STDOUT->autoflush(1);

这包含在我正在分析的程序中,我想更好地理解它的作用。在该计划的开头还有这个:

use IO::Handle;

......我认为可能与此有关,但它的文档中也没有提到这种方法。

1 个答案:

答案 0 :(得分:4)

您注意到的IO::Handle中列出的 方法

...
$io->autoflush ( [BOOL] )                         $|
...

设置/取消设置$|,然后将您转到$| in perlvar进行解释

  

如果设置为非零,则在当前所选输出通道上的每次写入或打印后立即强制刷新。

As of v5.14您无需use IO::Handle,因为IO::File在需要时为require

这种方法的特殊之处在于,即使没有提供值,它也会启动自动闪存,

$io->autoflush;  # turned on ($| gets set)

而其他相关的(参见docs)在没有参数的情况下调用时不会更改当前值。