Perl sleep()的行为I don';我不明白
我试图实现“倒计时”,从5到1,数字将被打印出来,然后等待1秒。但是,使用下面的代码,终端在5秒钟内不显示任何内容并打印Perl sleep()的行为I don';我不明白,perl,Perl,我试图实现“倒计时”,从5到1,数字将被打印出来,然后等待1秒。但是,使用下面的代码,终端在5秒钟内不显示任何内容并打印5。。4.. 三。。2.. 1..。啊,什么 use strict; use warnings; use v5.16; # Test stuff, or so help me! for (reverse 1..5) { print "$_.. "; sleep 1; } say ''; 到终端的打印通常是行缓冲的。你必须冲洗标准液 print "$_..
5。。4.. 三。。2.. 1..
。啊,什么
use strict;
use warnings;
use v5.16;
# Test stuff, or so help me!
for (reverse 1..5) {
print "$_.. ";
sleep 1;
}
say '';
到终端的打印通常是行缓冲的。你必须冲洗标准液
print "$_.. ";
flush STDOUT;
sleep 1;
或者您可以使用perl特殊变量$|并将其设置为非零值,perl将在每次写入后自动刷新
$|++;
# Or like this
$| = 1;
for (reverse 1..5) {
print "$_.. ";
sleep 1;
}
你试过刷新输出吗?也许可以添加如下内容:
BEGIN{select(STDERR);$|=1;select(STDOUT);$|=1;}
。请注意,flush
不是一个内置函数,而是一个IO::Handle
的方法——在较旧的perl上,这需要一个使用IO::Handle
来激活。因为它是一个方法调用,所以应该改为编写STDOUT->flush
。否则,+1表示优雅的解决方案