代码之家  ›  专栏  ›  技术社区  ›  Stephen

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

  •  4
  • Stephen  · 技术社区  · 8 年前

    我在Perl中找到了关于自动刷新的各种信息,但找不到任何与以下格式完全相同的行:

    STDOUT->autoflush(1);
    

    这包含在我正在分析的一个程序中,我想更好地了解它的功能。课程开始时也有以下内容:

    use IO::Handle;
    

    ...我认为这可能是相关的,但它在文档中也没有提到这个方法。

    1 回复  |  直到 8 年前
        1
  •  7
  •   zdim    5 年前

    方法 在中列出 IO::Handle 你注意到了

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

    由此 $| 设置/取消设置,并将您发送到 $| in perlvar 用于解释

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

    As of v5.14 你不必 use IO::Handle 对于此作为 IO::File require d需要时。

    此方法的特殊之处在于,即使没有提供值,它也会打开自动刷新,

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

    而其他相关函数在无参数调用时不会更改当前值。