string - 在 Perl 中迭代字符串

标签 string perl for-loop

我想制作一个脚本,它将逐个输入字符串字母

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/

相关文章:

c++ - 重新声明变量

java - 使用for循环android将按钮变量声明为数组

c++ - Turbo C++ 的字符串问题

javascript - 需要解释为什么 "1"- -"1"表达式返回 2?

java - VML 路径的字符串操作

perl - 在 Perl 中生成引用第 3 方插件函数的 Excel 电子表格

perl - 如何将传递的数组引用直接移到数组?

linux - 连接到主机并重放输出

c++ - 为什么我的函数在应该返回 char 时返回垃圾?

r - 在 R 的 for 循环中使用粘贴函数编写 ifelse 语句