file :: tail并在睡眠期间发送线路电子邮件?

时间:2013-06-07 06:02:52

标签: perl

我知道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));
  }

1 个答案:

答案 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);
}