我有以下代码来打印“。”每秒模拟一个进度条。
$num = 15;
while($num--){
sleep(1);
print ".";
}
我现在遇到的问题是“。”每次循环后不打印字符。而是全部 15 个“。”循环退出后立即打印。但是,如果我打印“.\n”,它工作正常。但是“。”每次都会在新行上打印,这不是我想要的。
这看起来很奇怪,无法弄清楚为什么。有人可以提供一些帮助吗?谢谢你。
问候,
艾伦
最佳答案
这可能是因为 I/O 正在被缓冲。尝试禁用缓冲(自动刷新):
$| = 1;
在你的循环之前。
更完整的解释请引用How do I flush/unbuffer an output filehandle? Why must I do this?
关于使用 Sleep() 时 Perl 打印功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693339/