哈希键无法转换为数组
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} };
我只有这个简单的 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} };