我有一个在我的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;
答案 0 :(得分:2)
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;
答案 1 :(得分:2)