我正在扫描关键字“警告”的错误日志。当我找到它时,会出现一种特殊的警告情况,它将仅以换行符结束与警告相关的信息。我想要做的是扫描这个错误日志,找到关键字警告继续跳过文件,直到我只找到一个换行符,然后一旦我找到它,分析那个块并打印出来。
格式将是这样的:
Warning! blah
blah
blah
orange
Warning! blah
blah
red
blah
Warning!
blah
blah
blah
yellow
到目前为止,这是我的代码:使用严格;使用警告;
my $file = $ARGV[0];
my $count = 0;
open(LOG, "<",$file) or die "cannot open < input: $!";
my $line = <LOG>;
while($line ne "")
{
if($line =~ /warning/i)
{
while($line !~/\A\n\z/)
{
if($line =~ /red/ || $line =~ /yellow/ ||$line =~ /black/)
{
$count++;
}
print($line);
$line = <LOG>;
}
print("Just finished a chunk.\n");
}
$line = <LOG>;
}
print($fix, "\n");
但是,这是一个不断抛出错误的无限循环,我不知道为什么。