2009-06-30 14 views
1

は、正規表現に一致し、配列に値を格納するためのスクリプトである:Perlを使用して複数の正規表現を1つの配列要素に結合するにはどうすればよいですか?

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

Perl5では、配列要素は@:$ array [1]、$ array [2]などではなく$を使用します。@array [1]どこでも@array [1]があなたに警告を出す理由です - あなたは警告をオンにしています、はい?) – ysth

+0

あなたは本を購入することを検討しましたか? http://books.perl.org/category/7 –

+0

@ sinan unur:私はすでに本を持っています。提案に感謝します。なぜ正規表現が情報にマッチしキャプチャしていて、それらを連続した要素として配置しているのか分かりますか? – shubster

答えて

8
push(@value, join('', $file =~ /$find/)); 
関連する問題