perl - 如何grep perl Hash Keys 到一个数组?

标签 perl

我是 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不包含键值 OrangeGrape .在 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/

相关文章:

linux - awk 或 perl one liner + 使用 awk one liner 命令验证数组值

perl - 驼鹿对象中的构建器子例程的参数

perl - 什么是用于各种人类语言的语音表示的好包?

perl - 什么是RMAGICAL?

arrays - perl中的$ {…}到底是什么意思?

mysql - perl dbi 在断开连接时重新连接

perl - 在 Perl 的 Spreadsheet::WriteExcel 模块中使用 Repeat_formula 时,为什么我的 2D 范围没有被 3D 范围替换?

multithreading - perl 线程自分离

perl - 将文本转换为十六进制值

PHP,Perl,问题。这是什么意思 : "$variable -> do some sort of function "