我想制作一个脚本,将一个一个地键入字符串字母
my $str = 'Test String';
my @spl = split '',$str;
for (@spl){
print "$_";
sleep(1);
}
print "\n";
sleep()
不起作用!它使我等待了1秒钟以上,并且即时获得了立即的全文,而没有任何延迟。 最佳答案
在循环中,您仅输出2个项目。还有一个事实,就是您的输出可能会被缓冲,因此只有在发送\n
时才可以刷新并打印该缓冲区。
尝试将$|
设置为非零值,这可能会禁用行缓冲。
例如
$| = 1;
$|++; // alternative often seen
另外,这做同样的事情:
STDOUT->autoflush(1); # Needs "use IO::Handle;" on older versions of Perl
尽管在这里可能不是问题,但
sleep()
并不是等待时间的好方法,尤其是在较旧的系统上。正如manual所述,有一些原因导致睡眠时间可能少于或超过1秒。