我在一段代码中发现了类似的东西:
use IO::Handle;
autoflush STDOUT 1;
print '';
“print”的目的是清空可能填充的缓冲区吗?
答案 0 :(得分:6)
print
强制缓冲区中的所有文本(来自先前的打印)立即被输出。该代码基本上禁用缓冲并刷新所有内容。
答案 1 :(得分:2)
print
调用 应该是一个浪费的系统调用。 perlvar
表示,“如果设置为非零,则在当前选定的输出通道上每次写入或打印后立即强制刷新。”此示例中的代码应打开autoflush,导致刷新,然后添加注释到STDOUT缓冲区并导致刷新。打印可能有另一个原因,但我的猜测是代码的原始作者与bvr做出了相同的假设,即在调用autoflush后需要刷新缓冲区中的数据。