执行while循环后,将值(字符串或数字)存储到数组中

时间:2013-02-18 07:23:16

标签: perl

我在下面有一个while循环:

while (<>)
{
    my $line = $_;
    if ($line =~ m/ERROR 0x/)
    {
        $error_found +=1;
    }
}

while循环结束后,我将匹配像“ERROR ...”这样的东西,我想将它们存储到数组或列表或散列中。我怎么能这样做?

2 个答案:

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