我是 perl 新手,需要帮助来理解下面的代码。
我有一个这样定义的 perl 哈希
1 my %myFavourite = ("Apple"=>"Apple");
2 my @fruits = ("Apple", "Orange", "Grape");
3 @myFavourite{@fruits}; # This returns Apple. But how?
如果 perl 大师能解释上面代码第 3 行中发生的事情,那就太好了。
myFavourite 被声明有一个散列,但用作数组?并且该语句简单地获取散列的键,将其放入数组并返回与搜索到的键对应的散列值。这是我们将哈希键 grep 到数组的方式吗?
最佳答案
它不会返回苹果。它的计算结果是一个散列切片,由散列中与 @fruits
中的键对应的所有值组成。 .请注意,如果您打开警告,则会收到 2 条关于未初始化值的警告。这是因为 myFavourite
不包含键值 Orange
和 Grape
.在 perldata 中查找“哈希切片”。
本质上,@myFavourite{@fruits}
是 ($myFavourite{Apple}, $myFavourite{Orange}, $myFavourite{Grape})
的简写,在这种情况下是 ($myFavourite{Apple},undef,undef)
.如果你打印它,你看到的唯一输出是 Apple
.
关于perl - 如何grep perl Hash Keys 到一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858489/