我试图实现'倒计时',从5到1将打印数字,然后等待1秒钟。但是,使用下面的代码,终端将显示5秒钟内的任何内容并打印5.. 4.. 3.. 2.. 1..
。呃,什么?
use strict;
use warnings;
use v5.16;
# Test stuff, or so help me!
for (reverse 1..5) {
print "$_.. ";
sleep 1;
}
say '';
答案 0 :(得分:6)
打印到终端通常是行缓冲的。你必须冲洗stdout。
print "$_.. ";
flush STDOUT;
sleep 1;
答案 1 :(得分:2)
或者您可以使用perl特殊变量 $ | 并将其设置为非零值,Perl将在每次写入后自动刷新。
$|++;
# Or like this
$| = 1;
for (reverse 1..5) {
print "$_.. ";
sleep 1;
}