Perl 在while循环中睡眠没有引起响应

Perl 在while循环中睡眠没有引起响应,perl,Perl,我在while循环中编写了一个sleep。这是一个非常简单的代码,但不起作用 如果注释为#1,则打印“go~”;否则,它只是等待,没有任何“go~”打印。 我的意图是定期做一些事情 有人能给我一些解释/提示吗?试着在go之后添加新行~ use strict; use warnings; &main(); sub main() { print "hello\n"; while(1) # #

我在
while
循环中编写了一个
sleep
。这是一个非常简单的代码,但不起作用



如果注释为#1,则打印“go~”;否则,它只是等待,没有任何“go~”打印。 我的意图是定期做一些事情


有人能给我一些解释/提示吗?

试着在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);
#!/usr/bin/perl

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

my@files=glob($dir)

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

睡眠(2)


}

更改
打印“go~”
打印“go~\n”
然后再试一次。@LeeDuhem是的,可以。我查过了。缓冲区问题不是C、C++或java,你不需要定义一个<代码>()/Cube >然后调用它。@ TejPaPtEL看起来这个问题很常见。我们是否应该建议新手使用
say
而不是
print
?这又是一个例子。这并不能回答这个问题。一旦你有足够的钱,你将能够;相反-
use IO::Handle;
STDOUT->autoflush(1);