にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2015/09/22. 13:23:33.

Perlで出力のバッファリングを無効にするには

てっどさんからのネタで、てっどさんが自力で解決した話ですけど(笑)、勉強になったのでメモ。^^;

Perlの標準出力はバッファリングされてます。改行「\n」を出力すれば標準出力に出力されますけども、「\n」を出さなければプログラムが終了するまで一切出力されません。
たいていの場合はそれで問題ないと思うのですが、コンソールで何か進行状況を表示させたいとき、「\r」を使って一旦出力した文字を書き直したいと思うこともあるでしょう。例えば、「/」→「|」→「\」→「-」→「/」…のように棒をくるくる回転させたいとか。(笑)

そんなときは、バッファリングをしないようにPerlに指示する必要があります。デフォルトではバッファリングされるので、改行を出力しない限り標準出力には何も出力されませんから、棒を回転させるとか(^^;)みたいな効果は不可能です。

で、バッファリングをしないようにするには、次のように書きます。

$| = 1;

特殊変数 $| に数値0以外の値を格納すれば、バッファリングしなくなるようです。
printやwriteを実行する度にfflushが呼び出されるようになるそうで。

[参考] バッファをフラッシュ??(@2ch)

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---