如何使用Perl将多个正则表达式匹配连接到一个数组元素?

时间:2009-06-30 14:02:03

标签: regex perl arrays join

以下是匹配正则表达式并在数组中存储值的脚本:

    sub b1 {
    #   print $_;
        my @file = @_;
        my @value;
        my $find = qr/(\s+)([0-9]+)\s([A-Z])\s[0-1].[0-9]+\s->\s([A-Z])\s/;
        foreach my $file(@file){
            push (@value, $file=~ /$find/) ;
            print "\n";
        }
        return @value;
    }

    my @array_b1 = b1(@body);
    print "@array_b1 \n";

__DATA__

      28 C 0.510 -> L 0.923
      30 S 0.638 -> A 0.527
      31 A 0.496 -> P 0.952

__OUTPUT__

28 C L            30 S A            31 A P  

从正则表达式捕获值并将其存储为数组时,脚本将值存储在数组中的连续元素中,即上面的数组包含元素:

@array[1]=28
@array[2]=C
@array[3]=L
@array[4]=30. 

相反,我想将正则表达式捕获的值存储在同一个数组元素中。那就是:

@array[1]=28CL
@array[2]=30SA

最好的方法是什么?

1 个答案:

答案 0 :(得分:8)

push( @value, join( '', $file =~ /$find/ ) );