哈希问题的Perl Hash

时间:2011-06-10 21:57:11

标签: perl hashtable

我在这里看到类似的问题,但这些问题都没有具体回答我自己的问题。

我正在尝试以编程方式创建哈希哈希。我的问题代码如下:

my %this_hash = ();
if ($user_hash{$uuid})
{
    %this_hash = $user_hash{$uuid};
}

$this_hash{$action} = 1;

$user_hash{$uuid} = %this_hash;
my %test_hash = $user_hash{$uuid};
my $hello_dumper = Dumper \%this_hash;

根据我的输出,$ this_hash被正确分配但是

$user_hash{$uuid} = %this_hash

在调试器中显示值为1/8;不确定他的意思。我也收到一个警告:“哈希分配中奇数个元素......”

2 个答案:

答案 0 :(得分:12)

任何时候你写

%anything = $anything
你做错了什么。几乎在你写的任何时候

$anything = %anything
你做错了什么。这包括$anything是数组还是哈希访问(即$array[$index]$hash{$key})。存储在数组和散列中的值始终是标量,而数组和散列本身不是标量。因此,当您想要在散列中存储散列时,可以将引用存储到它:$hash{$key} = \%another_hash。当您想要访问存储在哈希中的哈希引用的哈希时,您可以取消引用:%another_hash = %{ $hash{$key} }$hashref = $hash{$key}; $value = $hashref->{ $another_key }$value = $hash{$key}{$another_key}

为了快速了解参考资料,我强烈建议您阅读Perl References TutorialPerl Data Structures Cookbook

答案 1 :(得分:5)

这不是真正的“散列哈希”;它是“哈希引用的哈希”。

尝试:

$user_hash{$uuid} = \%this_hash;