ファイルハンドルへの出力をバッファしない(フラッシュする)

標準出力は$| = 1だけでいいけど、ファイル開いてるときは・・・?というのを知らなかったのでperldocとか見てたらわかった。selectで切り替えれば良いのか。

標準出力へフラッシュする

# $OUTPUT_AUTOFLUSH at use Engilsh;
$| = 1;

開いているファイルハンドルへフラッシュする

selectを使って、ファイルハンドルを変更してから"$|"を1にする。ただし、このあと再度selectで元のファイルハンドル(通常は標準出力)に戻さないと、普通にprintしただけでもselectしたファイルハンドルへ書き込んでしまうので注意。

open my $fh, '>', './hoge.txt' or die;
my $org_fh = select $fh;
$| = 1;

## print等ほげほげする

## 元に戻す
select $org_fh;