gpt4 book ai didi

Perl 打印缓冲刷新

转载 作者:行者123 更新时间:2023-12-04 16:37:38 25 4
gpt4 key购买 nike

我有以下 Perl 代码:

STDOUT->autoflush(1);

foreach(...)
{
...

foreach(...)
{
print("Processing $folder");
$|=1;
process($folder);
}
...
}

但是 print 语句仅在循环的第一次迭代中有效,之后不再打印任何内容。知道为什么吗?

编辑:我找到了原因并将其添加到答案中。
解决方案是:

I added the following line inside the loop and it worked:

select STDOUT;

I think the code in process() function should have been modifying the default output buffer. It was a code written by somebody else!

I am not sure if this is a problem with Perl which allows this or the developer who did not change it back to the default.

The final code looked like this:

foreach(...)
{
...

foreach(...)
{
select STDOUT;

print("Processing $folder");
$|=1;
process($folder);
}
...
}

Thanks all...

最佳答案

很好的侦探工作来追踪这个问题!

我想提出一个替代解决方案。

而不是 select()process() 的作者的 war ,您可以使用 IO::Handle标准输出接口(interface):

use IO::Handle;

foreach(...)
{
...

foreach(...)
{
STDOUT->printflush("Processing $folder");

process($folder);
}
...
}

关于Perl 打印缓冲刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1221773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com