我是Perl的新手。我在一个循环中写了一个睡眠;它是一个非常简单的代码,但没有工作。 furstruted ...
use strict;
use warnings;
&main();
sub main()
{
print "hello\n";
while(1) # #1
{
print "go~ ";
sleep 2;
}
}
如果评论#1,"去〜"印刷;否则,它只是等待没有任何"去〜"打印。 我的目的是定期做一些事情。
有人可以给出一些解释/提示吗?
答案 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);
}