在我打印其他内容之前,在Perl上打印一个点不会出现在屏幕上

Dan*_*lan 3 perl

这听起来很疯狂,但是当我使用该线printf(".")直到我打印其他内容时,屏幕上都没有显示.当我打印出其他信息时,从简单的行返回到实际数据,所有备份的点都打印出来.如果我使用printf(".\n")那么它工作正常.

我是在Ubuntu系统上做这个,如果这有所作为.

谢谢

k-m*_*-mx 5

这是一个缓冲问题.尝试设置自动冲洗:$| = 1;

{
    $| = 1;
    print ".";
}
sleep 1 for 1..5;
Run Code Online (Sandbox Code Playgroud)

STDOUT是行缓冲的,所以print ".\n"工作正常

更多信息:遭受缓冲?

另一个有用的答案:你能在Pe​​rl中强制刷新输出吗?

  • 或者`STDOUT-> autoflush(1);`. (4认同)
  • 为什么`1 for 1 for 1 for 1而不是'sleep 5`? (2认同)