如何在Perl中启动while循环之前打印?

net*_*djw 1 printing perl while-loop

我有这个代码Perl:

print "Processing ... ";
while ( some condition ) {
    # do something over than 10 minutes
}
print "OK\n";
Run Code Online (Sandbox Code Playgroud)

现在我在while循环结束返回第一个打印件.

如何启动while循环之前打印messeage ?

kab*_*nus 6

输出是缓冲的,这意味着程序决定它实际呈现的时间print.你可以放

$| = 1;
Run Code Online (Sandbox Code Playgroud)

stdout在这个单一实例中刷新.对于更多方法(自动刷新,文件刷新等),您可以在SO周围搜索有关此问题的问题.


Bor*_*din 6

通常,perl将在将其刷新到设备之前缓冲多达8KB的输出文本,或者如果设备是终端则将缓冲到下一个换行符.您可以通过添加来避免这种情况

STDOUT->autoflush
Run Code Online (Sandbox Code Playgroud)

假设您要打印到代码的顶部STDOUT.这将迫使数据后,每被刷新print,saywrite操作

请注意,这与使用相同,$| = 1但显着不那么神秘,并允许您更改任何给定文件句柄的属性