我想获取嵌套哈希的键列表,其后续键是
- 不等于 2 或
- 这些键不属于我的预定义键。
在下面的示例中,所需的输出是“ person_2
”、“ person_3
”和“ person_4
”,因为它们没有正好 2 个键,或者这些键不是来自我预定义的键:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my @array = qw/place name/;
my %seen;
$seen{$_}++ for @array;
my $hash = {
person_1 => {
name => "name_1",
place => "place_1",
},
person_2 => {
name => "name_2",
place => "place_2",
address => "address_2",
},
person_3 => {
name => "name_1",
},
person_4 => {
who => "name_1",
where => "place_1",
},
};
foreach my $a (keys %$hash)
{
print $a."\n" if (scalar(keys %{$hash->{$a}}) ne scalar(@array));
foreach $b (keys %{$hash->{a}})
{
print $a."\n" unless $seen{$b};
}
}
输出:
person_2
person_3
上面的输出是好的person_2
,person_3
因为它们没有确切的 2 个键
但是,我的第二个for
循环逻辑也应该打印出来person_4
,因为尽管它有确切的 2 个键,但这些键不是来自我的预定义键@array
。
你能告诉我我在这里做错了什么吗?
-谢谢。