我知道 file::tail 在等待搜索文件时会阻塞读取。但是,在该等待间隔期间,是否可以一次发送文件已找到的所有行?而不是它找到的每行发送一封电子邮件?所以如果我有行:
问题 112323
某物
问题 93483948
某物
它为第一个问题发送一封电子邮件,为第二个问题发送第二个电子邮件。而不是两者的聚合。我显然不能将子程序放在 while 之外,因为它不会退出。处理这个问题的最佳方法是什么?想法?谢谢!
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));
}