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
中的解决方案
我有以下哈希:
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