my %hash1 = (
a => ["turkey, mexico"],
b => ["india, china"],
c => ["england, vietnam"],
d => ["usa"],
);
我想获得与墨西哥有关的钥匙。 我怎么能得到它?
试过:
print @($a{$hash1{"mexico"}})
答案 0 :(得分:4)
也许你要么遍历哈希键并返回包含它的数组,要么你创建另一个哈希。对于第二个,它可能看起来像这样:
my %newhash;
for my $key (keys %hash1) {
my @list = split /, / => $hash1{$key}[0];
# or perhaps: my @list = map split(/, /, $_), @{ $hash1{$key} };
for (@list) {
$newhash{$_} = $key;
}
}
$newhash{mexico} eq 'a'; #true
这不是非常有效,但它会起作用。
答案 1 :(得分:2)
print grep { $hash1{$_}[0] =~ /mexico/ } keys %hash1;
并且在散列值是具有多个元素的数组的情况下,
print grep { grep { $_ eq "mexico" } @{$hash1{$_}} } keys %hash1;