【发布时间】:2017-03-26 04:12:03
【问题描述】:
我有一个这样的数组散列:
my @array1 = ("one", "two", "three", "four", "five");
my @array2 = ("banana", "pear", "apple");
my %hash = (
numbers => \@array1,
fruit => \@array2
);
我想使用数组的一个元素来访问密钥。例如,如果我有“香蕉”,我想打印“水果”。
但是,当我执行print $hash{banana} 时,我得到“在打印中使用统一化值”。如何正确访问它?
【问题讨论】:
-
哈希查找,就像数组查找一样,是单向的。给定一个键,你可以直接找到对应的值,但是使用一个值来查找一个键是行不通的,你必须写一个搜索。
-
有什么办法可以翻转它,这样我就可以拥有多个相同值的键?
-
散列值是独立的,但您可以将它们设置为相同的值。您可以使用八个键(数组中的字符串)以及
numbers或fruit作为值来构建散列。 -
好的,感谢您的帮助。我看到的唯一问题是数组每次都不相同,因此我无法将它们永久添加为键。
-
那么您需要在运行时在
for循环中构建您的哈希,或者使用map,如下面的答案所示。