perl的输出陷阱

以前现用perl为我们的首页系统写个daemon进程来做更新首页的事情,其实简单的说就是前端的同事把新的页眉放到存储里面。我的脚本去定期检测一下md5值,然后取出来。取出来后会对指定的字段进行替换。但是在做的时候就遇到点问题,日志一直不打出来。后来简单测试了一下
[pl]
#!/usr/bin/perl
use strict;
use warnings;
open LOG,">test.out" or die "open file failed\n";
foreach my $k (0..25)
{

print LOG ($k,"\n");
sleep(1);
}
[/pl]
运行这个的时候你会发现只有程序结束了才会写到文件。后来咨询了一下学了这样搞
[pl]
#!/usr/bin/perl
use strict;
use warnings;
use IO::Handle;
open LOG,">test.out" or die "open file failed\n";
LOG->autoflush();
foreach my $k (0..25)
{

print LOG ($k,"\n");
sleep(1);
}
[/pl]

当然也可以选择这样做
[pl]
#!/usr/bin/perl
use strict;
use warnings;
open LOG,">test.out" or die "open file failed\n";
foreach my $k (0..25)
{
syswrite(LOG,"$k\n",1024);
sleep(1);
}
[/pl]

此条目发表在Perl Script分类目录。将固定链接加入收藏夹。

发表回复