以下是匹配正则表达式并在数组中存储值的脚本:
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
最好的方法是什么?
答案 0 :(得分:8)
push( @value, join( '', $file =~ /$find/ ) );