我知道file :: tail会在等待搜索文件时阻塞读取。但是,在等待间隔期间,是否可以一次性发送文件找到的行?而不是它发现每行发送一封电子邮件?所以,如果我有线:
问题112323
SOMETHING
问题93483948
SOMETHING
它发送第一期的电子邮件,第二期的第二封电子邮件。而不是两者的集合。我显然不能把子程序放在外面,因为它不会退出。处理这个问题的最佳方法是什么?思考?谢谢!
my agg_lines=();
use File::Tail;
$file=File::Tail->new(name=>$name, maxinterval=>300, adjustafter=>7);
while (defined($line=$file->read)) {
if($line=~m/.\|ISSUE \|./)
{
push(@agg_lines,$line);
}
send_mail(join("\n",@agglines));
}
答案 0 :(得分:0)
use File::Tail qw( );
my $tail = File::Tail->new(name => $name);
while (my $block = $tail->read()) {
$tail->nowait(1);
while (my $line = $tail->read()) { $block .= $line; }
$tail->nowait(0);
send_mail($block);
}