2010-09-06 93 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;