@array
という配列から要素を照合して削除しようとしています。アレイ内に格納されたパターンと一致している必要があり、除去すべき要素は@del_pattern
内のすべての要素を、@array
からIループを@del_pattern
に含まれるパターンを除去するとgrepを使用して、それらを排除するPerl正規表現の配列 - 配列の一致する要素
my @del_pattern = ('input', 'output', 'wire', 'reg', '\b;\b', '\b,\b');
my @array = (['input', 'port_a', ','],
['output', '[31:0]', 'port_b,', 'port_c', ',']);
@del_pattern
と呼ばれます。
## delete the patterns found in @del_pattern array
foreach $item (@del_pattern) {
foreach $i (@array) {
@$i = grep(!/$item/, @$i);
}
}
しかし、私は@array
から','
を削除することができませんでした。 '\b,\b'
の代わりに','
を@del_pattern
に使用すると、port_b,
という要素も同様に意図された結果ではないので、@array
から削除されます。私は','
だけを含む要素の削除にのみ関心があります。
唯一の単語を削除する代わりに '^ \、$'を使用してみてください。使用しているパターンは、その中にあるすべての単語を削除します。 – Mohit
'@ array'に' input_a'があればそれは削除されるべきですか?言い換えれば、パターンは一致する必要がありますか等しいか?コンマの場合は、「** **のみ**、 '_」(私の強調)を含むようにする必要があります。 – zdim
'@ array'に' input_a'があれば、それは削除されるべきではありません。パターンは一致する必要があります –