for循环里的print

for循环里的print

大骆驼里的一个例子

QUOTE:
for (reverse 'BOOM', 1 .. 10) {  
    print "$_\n"; sleep(1);
}

运行得出预期的结果。

下面的代码却不能正常运行

QUOTE:
for (reverse 'BOOM', 1 .. 10) {
    print ; sleep(1);
}

去掉sleep (1)这条语句却能得到预期的结果

QUOTE:
for (reverse 'BOOM', 1 .. 10) {
    print ;
}

是可以的,你耐心点,等上 11 秒钟就可以了。

google 一下“stdout 是行缓冲的”,多学习学习吧。
解决办法是在程序开头加上 $|=1;
或者把 print 改成 say(perl 5.10),再或者把 print; 改成 print "$_\n";

明白了。多谢flw


QUOTE:
原帖由 flw 于 2008-8-21 08:25 发表
是可以的,你耐心点,等上 11 秒钟就可以了。

google 一下“stdout 是行缓冲的”,多学习学习吧。
解决办法是在程序开头加上 $|=1;
或者把 print 改成 say(perl 5.10),再或者把 print; 改成 print "$_\n";

say? 完了。。绝对落伍了我。。


QUOTE:
原帖由 smonkey0 于 2008-8-21 09:43 发表

say? 完了。。绝对落伍了我。。

perl 5.10

版主看来很喜欢 5.10
哦,这样都行啊,还等上11秒?FLW确实强悍。