我有以下 Perl 代码:
STDOUT->autoflush(1);
foreach(...)
{
...
foreach(...)
{
print("Processing $folder");
$|=1;
process($folder);
}
...
}
但是 print 语句仅在循环的第一次迭代中有效,之后不再打印任何内容。知道为什么吗?
编辑:我找到了原因并将其添加到答案中。解决方案是:
我在循环中添加了以下行并且它起作用了:
选择标准输出;
我认为 process() 函数中的代码应该一直在修改默认输出缓冲区。这是别人写的代码!
我不确定这是否是 Perl 的问题,它允许这个或没有将其更改回默认值的开发人员。
最终代码如下所示:
foreach(...) { ... foreach(...) { select STDOUT; print("Processing $folder"); $|=1; process($folder); } ... }
谢谢大家...