我对哈希的哈希感到非常困惑,无法找到解决方案。
我有一些哈希
%myHash = {'e5' => '0', 'f7' => 'b'};
%myHash2 = {'e5' => '1', 'f7' => 'a'};
%newHash;
$newHash{'move0'} = {%myHash};
$newHash{'move1'} = {%myHash2};
print Dumper(\%newHash);
输出:
$newHash = {
'move0' => {
'e5' => '0',
'f7' => 'b'
},
'move1' => {
'e5' => '1',
'f7' => 'a'
}
};
然后,当我尝试从哈希哈希中获取一个哈希并将其存储在哈希中时,我无法使其工作。
my %hash = {$newHash{"move0"}};
print Dumper(\%hash);
输出:
$hash = {
'HASH(0x26b7d40)' => undef
};
我已经尝试了许多其他方法从散列哈希中获取哈希并将其分配给哈希,但它不起作用。
答案 0 :(得分:7)
要制作哈希的副本,请使用
my %dst = %src;
你有对哈希的引用,所以那就是
my %dst = %{ $newHash{move0} };
但是所有浪费的副本是什么?使用
my %move0 = ( e5 => '0', f7 => 'b' );
my %move1 = ( e5 => '1', f7 => 'a' );
my %data = (
move0 => \%move0,
move1 => \%move1,
);
或
my %data = (
move0 => { e5 => '0', f7 => 'b' },
move1 => { e5 => '1', f7 => 'a' },
);
然后
my $move = $data{move0};