我是Perl的新手.我在一个while循环中写了一个sleep;这是一个非常简单的代码但是没有用.furstruted ...
use strict;
use warnings;
&main();
sub main()
{
print "hello\n";
while(1) # #1
{
print "go~ ";
sleep 2;
}
}
Run Code Online (Sandbox Code Playgroud)
如果注释掉#1,则打印"go~"; 否则,它只是等待没有任何"去〜"打印.我的目的是定期做一些事情.
任何人都可以给出一些解释/提示吗?
go~后尝试添加新行
use strict;
use warnings;
&main();
sub main()
{
print "hello\n";
while(1) # #1
{
print "go~\n";
sleep(2);
}
}
Run Code Online (Sandbox Code Playgroud)
解释原因:stdout流是缓冲的,所以只有在到达换行符后(或者告诉它时)才会显示缓冲区中的内容.您没有使用换行符,因此文本将被附加到缓冲区,直到缓冲区的大小.
如果您不想使用换行符,请在开头添加以下行
use IO::Handle;
STDOUT->autoflush(1);
Run Code Online (Sandbox Code Playgroud)