获取哈希值

MLM*_*LMH 0 arrays perl hash

我在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'}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想要哈希的'content'值 'harmonized_name' = env_package

Сух*_*й27 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;
Run Code Online (Sandbox Code Playgroud)

产量

missing
Run Code Online (Sandbox Code Playgroud)