2015-09-01 65 views
0

我在Perl中是相当新的,并且一直与R一起工作,有些东西我无法真正包裹我的思绪。我有一个哈希数组。在所有的哈希中,键都是相同的,但是值不同。我想获得具有特定值的散列号,因为在该散列表中存在我想要的另一个值(并且在不同的样本中有所不同)。获取哈希编号

我不知道这是我应该如何处理它的方式,而是我能想到的。这里是一块数组:

$VAR16 = { 
      'harmonized_name' => 'geo_loc_name', 
      'attribute_name' => 'geo_loc_name', 
      'content' => 'not determined', 
      'display_name' => 'geographic location'} 
$VAR17 = { 
      'harmonized_name' => 'env_package', 
      'attribute_name' => 'env_package', 
      'content' => 'missing', 
      'display_name' => 'environmental package'} 

在这个例子中,我希望有'harmonized_name' = env_package

+0

当使用'Data :: Dumper'转储数组时,您应该传递一个*引用*,像'print Dumper \ @ array'。这样你就不会得到所有那些不相关的'$ VAR99 =' – Borodin

回答

6

您可以使用grep筛选具有'harmonized_name' = env_package所有数组元素的散列的“内容”值,然后检查其值content

use strict; 
use warnings; 

my @AoH = (
    { 
    'harmonized_name' => 'geo_loc_name', 
    'attribute_name' => 'geo_loc_name', 
    'content' => 'not determined', 
    'display_name' => 'geographic location' 
    }, 
    { 
    'harmonized_name' => 'env_package', 
    'attribute_name' => 'env_package', 
    'content' => 'missing', 
    'display_name' => 'environmental package' 
    } 
); 

my @result = grep { $_->{harmonized_name} eq "env_package" } @AoH; 

print $_->{content}, "\n" for @result; 

输出

missing