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}(两次)。

于 2012-11-27T10:30:39.477 回答