perl 参考散列片

perl reference hash slice

我有以下哈希:

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 )};

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

谢谢

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

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

我认为您想要的是 @ref_values 包含每个 @crew.

的值数组

大概是这样的

my @ref_values;

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

如果您愿意,也可以使用 map,类似于 Сухой27

中的解决方案