每个打印语句后的 Perl 文件更新

Perl File Update After Each Print Statement

当我用 Perl 编写文件时,一旦程序完成,每个 Print 语句的完整内容都会在文件上更新。

有没有一种方法可以在执行每个打印语句后更新文件?

我试过设置 $|=1,但似乎不起作用。

$| 设置为非零值可在 仅当前选定的 输出文件句柄上启用自动刷新。默认情况下这是 STDOUT 除非你调用 select 来更改它

这意味着,如果您打开了文件的新句柄,$| 不会影响其行为

相反,您可以使用 IO::Handle 模块的 autoflush 方法。不需要 use IO::Handle 因为 IO::File,自 v5.14

以来,任何版本的 perl 都按需加载子类 IO::Handle

看起来像这样

open my $fh, '>', 'myfile.txt' or die $!;
$fh->autoflush;

在此之后,使用 print $fh 发送到文件的任何内容都会立即刷新到磁盘