[英]Perl - Set up an array of hashes and access an item in a hash
哈希数组的设置中是否存在语法错误? 它没有发出任何警告,但我也无法打印项目,因此我希望设置不是问题。
如何访问例如list5
内的x
进行打印?
。
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 ??
哈希数组(AoH)的元素是对这些哈希的引用 ,因此您需要使用哈希引用填充@full_list
。 给定您的脚本,请执行以下操作:
my @full_list = \( %list0, %list1, %list2, %list3, %list4, %list5 );
然后,访问“ list5
内部的x
”:
print $full_list[5]->{x}; # prints 1
->
表示法是arrow运算符 ,它取消引用$full_list[5]
的哈希引用。
要使用list5
作为索引@full_list
,你可以使用常量编译 :
use strict;
use warnings;
use constant list5 => 5;
...
print $full_list[list5]->{x}; # prints 1
希望这可以帮助!
也许这是有帮助的:
定义完毕后(@full_list =(%list0,%list1,...);),@ full_list的转储通过
use Data::Dumper;
print Dumper \@full_list;
看起来像
$VAR1 = [
'y',
1,
'x',
1,
'z',
0,
'list',
5
];
其中偶数元素是您的哈希键,每个奇偶元素是值。 Kenosis描述的可能是您想要的。 但是,如果由于某种原因(只是以某种形式提供给您)(您正在这里为我们简化它),并且必须使用@full_list或这样定义的数组,则可以获取由键和所有初始哈希值。
my %full_list_hash = @full_list;
print $full_list_hash{x};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.