00時00分00秒 [Perl/CGI]
てっどさんからのネタで、てっどさんが自力で解決した話ですけど(笑)、勉強になったのでメモ。^^;
Perlの標準出力はバッファリングされてます。改行「\n」を出力すれば標準出力に出力されますけども、「\n」を出さなければプログラムが終了するまで一切出力されません。
たいていの場合はそれで問題ないと思うのですが、コンソールで何か進行状況を表示させたいとき、「\r」を使って一旦出力した文字を書き直したいと思うこともあるでしょう。例えば、「/」→「|」→「\」→「-」→「/」…のように棒をくるくる回転させたいとか。(笑)
そんなときは、バッファリングをしないようにPerlに指示する必要があります。デフォルトではバッファリングされるので、改行を出力しない限り標準出力には何も出力されませんから、棒を回転させるとか(^^;)みたいな効果は不可能です。
で、バッファリングをしないようにするには、次のように書きます。
特殊変数 $| に数値0以外の値を格納すれば、バッファリングしなくなるようです。
printやwriteを実行する度にfflushが呼び出されるようになるそうで。
この日記へのコメントはお気軽に! コメント数:0件
(前の記事) « 見ないまま消しちゃう録画番組の量が増加するのは…
前後のエントリ
< 旧 / 新 >
コメント数: 0件