Perlの出力でバッファリングしないようにする

ALL
スポンサーリンク

Perlの出力でバッファリングせずに、すぐ出力するには、下記の行を実行します。

use IO::Handle;
STDOUT->autoflush(1);

次のプログラムはサンプルです。
0 1 2 … と表示するものですが、実行してもすぐには表示が出ません。
出力がバッファリングされているためです。

#!/usr/bin/perl
$i = 0;
while( true ){
  print "$i ";
  $i++;
  sleep( 1 );
}

次のように太字の行を追加します。
これを実行すると、すぐに 0 1 2 … と表示されます。

#!/usr/bin/perl
<strong>use IO::Handle;</strong>
<strong>STDOUT->autoflush(1);</strong>
$i = 0;
while( true ){
  print "$i ";
  $i++;
  sleep( 1 );
}

コメント