2012-11-27 78 views
0

我想刪除其值中包含「local」字符串的值。這裏是我的散列輸出(print Dumper ($hash)):嵌套散列/數組中的Perl Grep問題

$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

你有{key}你的意思是{$key}(兩次)。

+0

感覺就像殺了我的自我。非常感謝。 – slayedbylucifer

+0

我自己做了:) – ysth