Perl:在while循环中睡眠没有引起任何反应

时间:2014-04-25 02:46:29

标签: perl

我是Perl的新手。我在一个循环中写了一个睡眠;它是一个非常简单的代码,但没有工作。 furstruted ...


use strict;
use warnings;

&main();
sub main()
{
print "hello\n";

while(1)                    # #1
{   
      print "go~  ";
      sleep 2;      
}
}

如果评论#1,"去〜"印刷;否则,它只是等待没有任何"去〜"打印。 我的目的是定期做一些事情。

有人可以给出一些解释/提示吗?

2 个答案:

答案 0 :(得分:8)

在go~

之后尝试添加新行
    use strict;
    use warnings;

    &main();
    sub main()
    {
    print "hello\n";

    while(1)                    # #1
    {
          print "go~\n";
          sleep(2);
    }
    }

解释原因: stdout流是缓冲的,因此只会在缓冲区到达换行符后(或者告诉它时)显示缓冲区中的内容。您没有使用换行符,因此文本将被附加到缓冲区,直到缓冲区的大小。

如果您不想使用新行而不是在开头添加以下行

use IO::Handle;
STDOUT->autoflush(1);

答案 1 :(得分:-1)

#!/ usr / bin / perl

$ dir =“ / home / tazim / Videos / perl / *”;

my @ files = glob($ dir);

foreach(@files){ 打印$ _。“ \ n”;

sleep(2);

}