哈希键无法转换为数组

Hash keys are not able to translate to an array

我只有这个简单的 perl 代码:

#!/usr/bin/perl
use Module::CoreList;
use local::lib;
#print ref( $Module::CoreList::version{5.014002});
@m = sort keys $Module::CoreList::version{5.014002};

所以我知道一些特定版本的模块。但是当尝试 运行:

Experimental keys on scalar is now forbidden at ./a line 5.
Type of arg 1 to keys must be hash or array (not hash element) at ./a line 5, near "};"
Execution of ./a aborted due to compilation errors.

但是为什么要用$Module::CoreList::version{5.014002}作为标量呢?当类型是散列时(当你想知道那个散列的键时很好的数组)?

根据 the documentation of Module::CoreList%Module::CoreList::version returns 以 perl 版本 为关键字的散列的散列。所以散列的每个元素都是散列引用,而不是散列。

您需要取消引用 哈希引用,方法是在其前面放置一个%,如下所示:

@m = sort keys %{ $Module::CoreList::version{5.014002} };