繁体   English   中英

Perl-设置哈希数组并访问哈希中的项目

[英]Perl - Set up an array of hashes and access an item in a hash

  1. 哈希数组的设置中是否存在语法错误? 它没有发出任何警告,但我也无法打印项目,因此我希望设置不是问题。

  2. 如何访问例如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM