perl でファイル書き込みを flush

| コメント(0) | トラックバック(0)

----

perl でファイルを作っていると、出力したデータがある程度バッファリングされてからファイルに書き込まれる。

すぐに終わる処理ならそれでいいのだが、時間のかかるファイル作成処理を行なっていると、逐一書き込んでくれたほうが便利な場合がある。

と思って、逐一書き込み(flush)してくれる書き方が無いか調べてみたら
$| = 1;
というのが出てきた。
これをかけば、逐一書き込みしてくれるようだが、効果はSTDOUTのみだった。

オープンしたファイルにも適用したいと思っていろいろ調べたところ、以下の書き方で実現可能でした。

$oldFh = select(OPENFILE);
$| = 1;
select($oldFh);

*OPENFILE は開いたファイルのハンドル




 

トラックバック(0)

トラックバックURL: http://onno.jp/mt/cgi-bin/mt-tb.cgi/176

コメントする

このブログ記事について

このページは、管理者が2012年7月 7日 06:04に書いたブログ記事です。

ひとつ前のブログ記事は「vi を使用中に Ctrl+s をどうしても押してしまう」です。

次のブログ記事は「ステレオのwavファイルをモノラル再生したらフィルターがかかったような音になる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 5.13-ja