perl引用哈希片

时间:2015-04-28 08:00:53

标签: perl reference

我有以下哈希:

my %gilligan_info = (
        name            =>      'Gilligan',
        hat             =>      'white',
        shirt           =>      'Red',
        position        =>      'First Mate',
);

my %skipper_info = (
        name            =>      'Skipper',
        hat             =>      'Black',
        shirt           =>      'Blue',
        position        =>      'Captain'
);

我有一系列哈希:

my @crew = (\%gilligan_info, \%skipper_info);

我创建了一个引用:

my $ref = \%{$crew[1]};

我从第二个哈希中提取键值:

my @ref_values = @{$ref}{ qw ( name position hat )};

我的问题是,如何通过不在引用中指定元素编号来获取哈希值?#34; $ ref"?

由于

2 个答案:

答案 0 :(得分:0)

如果您想要单个数组中所有哈希的值,

my @ref_values = map @$_{ qw(name position hat) }, @crew;

答案 1 :(得分:0)

我认为您希望@ref_values包含每个@crew的值数组。

这样的事,也许是

my @ref_values;

for my $crew ( @crew ) {
  push @ref_values, [ @$crew{ qw(name position hat) } ];
}

如果您愿意,也可以使用map,与Сухой27的解决方案类似