アプリ版:「スタンプのみでお礼する」機能のリリースについて

OS:Windows XP Home Edition
インタプリタ:Active Perl(v5.8.8 built for MSWin32-x86-multi-thread)


簡単なスクリプトを作っていたのですが、
sleepについて質問があります。

#!/usr/bin/perl



$a = 3;

$b = 4;

if($a > $b){
print "aが大きい";
}
else{

print "bが大きい";
sleep(20);

}

このようなプログラムを書いたとき、
「bが大きい」が20秒遅れて表示されるのは
正しいですか?

私は「bが大きい」が表示されてから、20秒待つように
思えるのですが、実際の動きは「bが大きい」が20秒遅れて
表示されます。

A 回答 (1件)

printによる出力はバッファリングされますから、


printしたら直ちに出力されるとは限りません。
今回の場合は、printした内容はプログラム終了時に出力されたのでしょう。

バッファリング
http://x68000.q-e-d.net/~68user/webcgi/buffering …
Perlで出力のバッファリングを無効にするには - Sakura scope
http://www.nishishi.com/blog/2006/05/perl_buffer …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参照リンクの解決法で解決しました。

バッファリングが起こっていたのですね・・
なぞが解けました。

お礼日時:2007/09/26 21:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!