2010-09-06 90 views
6

的Perl中的哈希我有一個像下面散列的Perl中的哈希:快速篩選哈希

$VAR1 = { 
      'ID_1' => { 
          'FILE_B' => '/path/to/file/file1', 
          'FILE_C' => '/path/to/file/file2', 
          'FILE_A' => '/path/to/file/file3' 
         }, 
      'ID_2' => { 
          'FILE_B' => '/path/to/file/file4', 
          'FILE_A' => '/path/to/file/file5' 
         }, 
      'ID_3' => { 
          'FILE_B' => '/path/to/file/file6', 
          'FILE_A' => '/path/to/file/file7' 
         } 
      ...      
} 

我想獲得在已經FILE_C定義的主散列成員的所有鍵的列表。在這個例子中,這將只返回ID_1。我知道如何在繁瑣的循環中執行此操作(迭代所有的鍵,檢查是否定義了FILE_C,如果是這樣 - 將鍵推到數組中,最後返回這個數組),但是我感覺這裏有一個單一的數組元組,襯墊,甚至爲這個功能...

回答

15

是的,perl的有grep功能:

my @keys = grep { defined $hash{$_}{FILE_C} } keys %hash;