我有一个在我的 perl 脚本中创建的输出文件。我希望所有信息都能立即输出,而不是逐渐输出。这将通过缓冲来完成?这将如何工作?
相关的代码行是:
open( my $o, '>', 'output.txt' ) or die "Can't open output.txt: $!";
(then later on)
print( $o ("$id"),"\n" );
(then later on)
close $o;
我有一个在我的 perl 脚本中创建的输出文件。我希望所有信息都能立即输出,而不是逐渐输出。这将通过缓冲来完成?这将如何工作?
相关的代码行是:
open( my $o, '>', 'output.txt' ) or die "Can't open output.txt: $!";
(then later on)
print( $o ("$id"),"\n" );
(then later on)
close $o;
Perl 实际上默认缓冲它的输出——你可以通过设置特殊变量来关闭它$|
。
如果您真的想要一次所有输出,最安全的选择是在您准备好之前不要将其发送输出,例如:
use IO::Handle qw( ); # Not necessary in newer versions of Perl.
my @output;
(then later on)
push @output, $id;
(then later on)
open( my $o, '>', 'output.txt' ) or die "Can't open output.txt: $!";
$o->autoflush(1); # Disable buffering now since we really do want the output.
# This is optional since we immediately call close.
print( $o map "$_\n", @output );
close $o;