如何在不等待Perl换行的情况下立即打印文本?

shi*_*ino 14 printing perl newline

我在perl中具有计算上昂贵的任务,并且想要通过在计算的每个部分完成之后打印出一段时间来通知用户计算正在进行.不幸的是,在我打印"\n"之前,我的周期都没有打印出来.我该如何解决这个问题?

Ale*_*nii 17

您需要为STDOUT设置autoflush.例:

use IO::Handle;
STDOUT->autoflush(1);
foreach (1..20) {
  print '.';
  sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

  • @Hans请勿链接到未经授权的书籍副本. (2认同)

Mar*_*tin 7

$|=1在开始打印之前设置.例如.

perl -e ' $|=1; foreach (1..10) { print "$_ "; sleep(1); }'
Run Code Online (Sandbox Code Playgroud)