我想在Perl中创建一个hash值的hash,而不必显式地写出所有内容。我知道我可以使用dclone
来做类似这样的事情:
use Storable 'dclone';
my %main_hash = (
A => {},
B => {},
C => {},
);
my %sub_hash = (
a => [],
b => [],
c => [],
d => [],
);
foreach my $main_key (keys %main_hash) {
$main_hash{$main_key} = dclone {%sub_hash};
}
最终结果:
%main_hash:
A => {
a => [],
b => [],
c => [],
d => [],
},
B => {
a => [],
b => [],
c => [],
d => [],
},
C => {
a => [],
b => [],
c => [],
d => [],
},
);
有没有办法在不依赖dclone
或其他导入的模块的情况下重复进行哈希插入?
2条答案
按热度按时间roejwanj1#
你可以把
%sub_hash
声明放在循环中,并把它赋给主哈希值,每次循环迭代都是一个新的哈希值,你不需要dclone
:输出量:
f0brbegy2#
请检查下面的代码片段,它利用两个索引生成一个散列--以符合您的问题。
输出量