1

次の配列があります。

$arry = [
      '',
      'foo',
      'bar',
      'ion'
    ];

私がやりたいのは、とを削除すること"" ionですbar。しかし、なぜこれが失敗したのでしょうか。

my @new = grep {!/ |ed|ion/} @$arry;

それは印刷します:

$VAR1 = [
          '',
          'foo',
          'bar'
        ];

ここでテスト: https://eval.in/50792

4

3 に答える 3

4

あなたgrepは要素'''foo'、および を残し'bar'ます。これは、単一のスペース、、またはを含む要素を削除しているためです。配列の 1 つの要素のみがこの条件に一致します。最後の要素は です。というわけで、これだけを削除。'ed''ion''ion'

おそらくあなたがしたい

my @new = grep { $_ ne '' and $_ ne 'ion' and $_ ne 'bar' } @$arry;

また

my @new = grep $_ !~ /\A(?:|ion|bar)\z/, @$arry;
于 2013-09-26T11:18:58.237 に答える
3

これを試して:

my @new = grep {!/^$|ed|ion/} @$arry;
于 2013-09-26T09:37:23.197 に答える