0

perlの正規表現を使用して、「1.Virtualization」から「2.Virtualization」までの値をgrepしようとしています。アレイ内の1.Virutalizationと2.Virtualizationの間に多くのデータがあります。

以下に示すように、私の配列の内容のサンプル。
"1.仮想化容量管理パフォーマンス低下の結果として発生したインシデントの数09991054容量計画の作成コスト10K100K80K30K10K容量の計画外購入の数099915 1052.仮想化財務管理インシデントの数パフォーマンスの低下の結果として09991054容量計画の作成コスト10K100K80K 30K 10K "

1から2までの値をgrepする制御ループを作成するにはどうすればよいですか。1から2の間では、データ「キャパシティプラン10K 100K 80K 30K 10Kの生産コスト」をgrepして、1つのアレイの場所に配置する必要があります。

制御されたループの書き方を理解できなかったコードを書いてみました。誰かがこの問題で私を助けることができますか?

foreach (@array) { 
    if ($_ =~ /\d+\.\s+Virtualization.*/) { #greps values starting in 1. Virtualizaton
         push (@node_level1, "$_");         #stores in the node_level1
    } elsif ($_ =~ /(\%\s+.*)/) {  #greps values beginning with % Number of Nodes 
       # print "$_\n";
    }
}

前もって感謝します。

4

2 に答える 2

1

perlには、perrealの答えであるフリップフロップ演算子と同じことを行う自動魔法の演算子があります。

foreach (@array) { 
    if (/1.\s+Virtualization/../2.\s+Virtualization/) {
       push (@node_level1, $_);
    }
}
于 2012-12-10T03:18:44.820 に答える
0

状態ホルダーの使用:

my $state = 0;

foreach (@array) { 
    if ($_ =~ /1.\s+Virtualization/) {
         $state = 1;
    } elsif (($state == 1) and ($_ =~ /2.\s+Virtualization/)) {
       $state = 0;
    } elsif ($state == 1) {
       push (@node_level1, $_);         #stores in the node_level1
    }
}
于 2012-12-10T00:04:57.487 に答える