我在下面有一个while循环:
while (<>)
{
my $line = $_;
if ($line =~ m/ERROR 0x/)
{
$error_found +=1;
}
}
while循环结束后,我将匹配像“ERROR ...”这样的东西,我想将它们存储到数组或列表或散列中。我怎么能这样做?
答案 0 :(得分:2)
只需将数据推送到数组中即可。
my @errors;
while (<>)
{
my $line = $_;
if ($line =~ m/ERROR 0x/)
{
push @errors, $line;
}
}
稍微清理一下:
my @errors;
while (my $line = <>)
{
if ($line =~ /ERROR 0x/)
{
push @errors, $line;
}
}
或者甚至可能
my @errors;
while (<>)
{
if (/ERROR 0x/)
{
push @errors, $_;
}
}
最后,要意识到grep
在这里会做得很好:
my @errors = grep { /ERROR 0x/ } <>;
答案 1 :(得分:0)
my @arr;
while (<>)
{
my $line = $_;
if ($line =~ m/ERROR 0x/)
{
push(@arr,$line) ;
}
}
print "$_\n" for @arr;