0

値に「ローカル」文字列を含む値を削除したい。これが私のハッシュ出力です(print Dumper ($hash)):

$VAR1 = {
          'FARM_03' => [
                           'nfs01',
                           'nfs02',
                           'nfs03',
                           'localvmfs',
                           'localvmfs'
                           ],
          'FARM_07' => [
                           'nfs01',
                           'localvmfs',
                           'localvmfs'
                           ],
          'FARM_11' => [
                           'nfs01',
                           'localvmfs',
                           'localvmfs'
                           ]
        };

したがって、「ローカル」エントリを省略するために、スクリプトに以下のコードを記述しました。

foreach my $key ( keys %$hash )
{
    @{ $hash->{key} } = grep { !/local/i } @{ $hash->{key} };
}

上記のgrepコマンドを実行した後の出力は次のとおりです。

$VAR1 = {
          'FARM_03' => [
                           'nfs01',
                           'nfs02',
                           'nfs03',
                           'localvmfs',
                           'localvmfs'
                           ],
          'FARM_07' => [
                           'nfs01',
                           'localvmfs',
                           'localvmfs'
                           ],
          'FARM_11' => [
                           'nfs01',
                           'localvmfs',
                           'localvmfs'
                           ]
          'key' => []
    };

「ローカル」エントリを削除するのではなく、新しいフィールドを追加します'key' => []

grepステートメントの何が問題になっているのか教えてください。

ありがとう。

4

1 に答える 1

4

あなたは{key}あなたが意味するところを持っています{$key}(2回)。

于 2012-11-27T10:30:39.477 に答える