我想制作一个脚本,它将逐个输入字符串字母
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状态, sleep 时间可能少于或多于 1 秒是有原因的。
关于string - 在 Perl 中迭代字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24449307/