0

以下に while ループがあります。

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

while ループが終了した後、"ERROR..." のようなものに一致し、それらを配列、リスト、またはハッシュに格納します。これどうやってするの?

4

2 に答える 2

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/ } <>;
于 2013-02-18T07:53:04.760 に答える
0
my @arr;
while (<>)
{
    my $line = $_;
    if ($line =~ m/ERROR 0x/)
    {
        push(@arr,$line) ;
    }
}

print "$_\n" for @arr;
于 2013-02-18T07:32:00.640 に答える