快速过滤Perl哈希表中的哈希。

6

我有一个像下面这样的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,如果是,则将键推入数组,最后返回此数组),但我有一种感觉,可以使用单行代码或函数来实现这个功能...

1个回答

15

是的,Perl 有 grep 函数:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接