2010-10-28 67 views
0

内哈希我有3个维Hash和2维散了,我想用3维散,这样的事情,这是类似的内部散列的一个合并的2维Hash我做合并一对2d哈希值:合并在Perl

my %3dhash; 
my %2dhash; 
my $key = "some string"; 
%3dhash{$key} = ($3dhash{$key}, %2dhash); 

但是,当我试图它不起作用。我该怎么做?

回答

2

尝试以下方法:在Perl

my %hash3d; 
my %hash2d; 
.... 
my $key = "some string"; 
$hash3d{$key} = { %{ $hash3d{$key} }, %hash2d }; 

变量不能以数字开头,所以我改名的变量。围绕现有散列的%{ ... }将其扩展为列表。该列表与从%hash2d列表中变平。周围的列表{ ... }是匿名哈希引用构造函数,它创建了一个新的哈希引用,然后存储在$hash3d{$key}

+0

谢谢!我从内存中输入代码,这是所有语法错误的原因。你的解决方案虽然工作。 – DAG 2010-10-28 20:56:06

+0

变量也可以从数字开始 - '$ 0 $ 1 $ 2 ... $ 9'是什么? ;-) – ephemient 2010-10-28 21:30:27

+1

@ephemient,这些都是内置的特殊变量。您不能创建以数字开头的新变量。 – cjm 2010-10-28 21:41:41