使用 Sleep() 时 Perl 打印功能无法正常工作

标签 perl

我有以下代码来打印“。”每秒模拟一个进度条。

$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/

相关文章:

regex - Perl正则表达式中的加权析取?

perl - 使用从 Perl 调用的程序的结果

perl - Perl 中字符串的长度与字符编码无关

excel - 使用 perl 在同一工作表中的直方图

bash - 将文本粘贴到终端

perl - Perl 如何解析未引用的裸词?

mysql - 用于登录数据库并进行简单查询的 Perl 模块?

perl - DBIx::Class 示例

perl - 如何从命令行获取文件句柄?

perl - 是否可以修改单词字符类或\b 边界以排除下划线字符?