Perl运算符:$ | ++;美元符号管加上加号

时间:2012-01-10 13:44:18

标签: perl expression

我正在研究已经发布的perl代码的新版本,并找到了这一行:

$|++;

AFAIK,$ |与管道相关,如in this link所述,我理解这一点,但我无法弄清楚++(加上加号)在这里的意思。

提前谢谢。

编辑:找到答案 in this link

简而言之:如果脚本太快,它会强制在下一个语句之前打印(刷新)到您的控制台。

  

有时,如果将print语句放在一个非常快速运行的循环中,则在程序终止之前,您将看不到print语句的输出。有时,你根本看不到输出。解决这个问题的方法是在每个print语句后“刷新”输出缓冲区;这可以使用以下命令在perl中执行:

$|++;
  

[更新]   正如r指出的那样。施瓦茨,我错过了;上面的命令会导致print在下一次输出之前刷新缓冲区。

4 个答案:

答案 0 :(得分:18)

$|默认为0;执行$|++因此将其增加到1.将其设置为非零会对当前选定的文件句柄启用autoflush,默认情况下为STDOUT,并且很少更改。

因此,效果是确保print语句等立即输出。如果您要输出到套接字等,这非常有用。

答案 1 :(得分:12)

$|$OUTPUT_AUTOFLUSH的缩写,正如您所发现的那样。 ++增加此变量。

$| = 1将是干净的方式(恕我直言)。

答案 2 :(得分:4)

从IO :: Handle之前的几天开始,这是一个古老的习语。在现代代码中,这应该写成

use IO::Handle; STDOUT->autoflush(1);

答案 3 :(得分:3)

它会增加autoflush,这很可能等同于打开它。