我有两个哈希数组:AH1和AH2。
$AH1 = [
{
'id' => 123,
'name' => abc
},
{
'id' => 456,
'name' => def
},
{
'id' => 789,
'name' => ghi
},
{
'id' => 101112,
'name' => jkl
},
{
'id' => 1389,
'name' => mno
}
];
$AH2 = [
{
'id' => 123,
'name' => abc
},
{
'id' => 1389,
'name' => mno
},
{
'id' => 779,
'name' => ghi
}
];
如何使用Perl 存在功能来打印AH2中AH1的哈希值?或者不必迭代数组。
答案 0 :(得分:1)
exists
按索引定位,为0,1,2,而不是123,1389,779。 exists
无法帮助。
此外,除非将其中一个数组切换为散列,否则必须遍历两个数组(以这种或那种方式)。
$HH2 = {
123 => {
'id' => 123,
'name' => abc
},
1389 => {
'id' => 1389,
'name' => mno
},
779 => {
'id' => 779,
'name' => ghi
}
};
事实上,转换是解决这个问题的最简单方法。
my %HH2 = map { $_->{id} => $_ } @$AH2;
for (@$AH1) {
print "$_->{id} in both\n"
if $HH2{ $_->{id} };
}
它也很有效:你只迭代每个数组一次。