我在Perl中相当新,并且我一直与R一起工作,有些事我无法真正理解。


我有一系列哈希。在所有哈希中,键是相同的,但值是不同的。我想得到其中具有特定值的哈希的数量,因为在该哈希中还有我想要的另一个值(并且在不同的样本中有所不同)。


我不知道这是否是我应该解决的方式,但我能想到的是这个。这是一个数组:


 $ VAR16 = {
 'harmonized_name'=> 'geo_loc_name',
 'attribute_name'=> 'geo_loc_name',
 'content'=> '没有决定',
 'display_name'=> '地理位置'}
 $ VAR17 = {
 'harmonized_name'=> 'env_package',
 'attribute_name'=> 'env_package',
 'content'=> '丢失',
 'display_name'=> 'environment package'}



 在这个例子中,我希望哈希的'content'值具有'harmonized_name '= env_package
答案 0 :(得分:6)
您可以使用<route id="db-import-route">
<from uri="timer://queryTimer?period=2s" />
<setBody>
<constant>
SELECT * FROM address
</constant>
</setBody>
<to uri="jdbc:dataSource" />
<split>
<simple>${body}</simple>
<process ref="SqlDecoder" />
<process ref="Validator" />
</split>
</route>
过滤所有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;