我正在研究已经发布的perl代码的新版本,并找到了这一行:
$|++;
AFAIK,$ |与管道相关,如in this link所述,我理解这一点,但我无法弄清楚++(加上加号)在这里的意思。
提前谢谢。
编辑:找到答案 in this link:
简而言之:如果脚本太快,它会强制在下一个语句之前打印(刷新)到您的控制台。
有时,如果将print语句放在一个非常快速运行的循环中,则在程序终止之前,您将看不到print语句的输出。有时,你根本看不到输出。解决这个问题的方法是在每个print语句后“刷新”输出缓冲区;这可以使用以下命令在perl中执行:
$|++;
[更新] 正如r指出的那样。施瓦茨,我错过了;上面的命令会导致print在下一次输出之前刷新缓冲区。
答案 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,这很可能等同于打开它。