哈希数组的设置是否存在语法错误?它没有给出任何警告,但我也无法打印项目,所以我希望设置不是问题。
如何在x
内访问例如list5
进行打印?
use strict;
use warnings;
my (%list0, %list1, %list2, %list3, %list4, %list5);
%list5 = (
"list" => 5,
"x" => 1,
"y" => 1,
"z" => 0,
);
my @full_list = (%list0, %list1, %list2, %list3, %list4, %list5);
print ??
答案 0 :(得分:3)
哈希数组(AoH)的元素是references到那些哈希值,因此您需要使用哈希引用填充@full_list
。根据您的脚本,执行以下操作:
my @full_list = \( %list0, %list1, %list2, %list3, %list4, %list5 );
然后,要访问x
内的“list5
”:
print $full_list[5]->{x}; # prints 1
->
表示法是arrow operator,它取消引用$full_list[5]
中的哈希引用。
要使用list5
作为@full_list
的索引,您可以使用constant pragma:
use strict;
use warnings;
use constant list5 => 5;
...
print $full_list[list5]->{x}; # prints 1
希望这有帮助!
答案 1 :(得分:0)
也许,这很有帮助:
正如您所定义的那样(@full_list =(%list0,%list1,...);),通过
转储@full_listuse Data::Dumper;
print Dumper \@full_list;
看起来像
$VAR1 = [
'y',
1,
'x',
1,
'z',
0,
'list',
5
];
其中,偶数元素是您的散列键,每个元素后面的奇数元素是值。肯尼斯所描述的可能就是你想要的。但是,如果由于某种原因,这只是给你(另一种形式,你在这里简化它),你必须使用@full_list或这样定义的数组,你可以得到一个包含键和来自所有初始哈希的值。
my %full_list_hash = @full_list;
print $full_list_hash{x};