[英]Perl: Combine hash with Keys of Keys containing identical Key
我正在尝试将这些哈希图合并到 perl 中,并且当密钥相同时无法弄清楚如何去做。 所需的输入是 VAR1 和 VAR2,还提到了 output。
输入:
my $VAR1 = { 'p'=> { 'a' => 2,
'b' => 3}};
my $VAR2 = { 'p'=> { 'c' => 4,
'd' => 7}};
所需的 Output:
{'p'=> {
'a' => 2,
'b' => 3,
'c' => 4,
'd' => 7}};
说你有
my %h1 = ( a => 2, b => 3 );
my %h2 = ( c => 4, d => 7 );
要将它们组合成第三个 hash,您可以使用
my %h = ( %h1, %h2 );
就好像你已经完成了
my %h = ( a => 2, b => 3, c => 4, d => 7 );
任何通用键都将从列表后面的 hash 中获取。
在您的情况下,您有匿名哈希。 因此,我们将使用%NAME
的地方,我们将使用%BLOCK
,其中块返回对我们要使用的 hash 的引用。 这给了我们以下信息:
my %h_inner = (
%{ $VAR1->{p} },
%{ $VAR2->{p} },
);
这也可以写成: [1]
my %h_inner = (
$VAR1->{p}->%*,
$VAR2->{p}->%*,
);
最后,您还希望第二个新 hash 具有一个以p
为键的元素,其值是对第一个新 hash 的引用。
my %h_outer = ( p => \%h_inner );
所以,大家一起,你想要
my %h_inner = (
%{ $VAR1->{p} },
%{ $VAR2->{p} },
);
my %h_outer = ( p => \%h_inner );
我们也可以改用匿名 hash 构造函数 ( {}
)。
my %h_outer = (
p => {
%{ $VAR1->{p} },
%{ $VAR2->{p} },
},
};
文件:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.