2015-09-01 106 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