Perl 将数组的散列连接到另一个散列的正确方法
我有一个散列结构,其中每个键对应一个“值”,这是一个数组。我定义并构建了如下哈希结构:Perl 将数组的散列连接到另一个散列的正确方法,perl,Perl,我有一个散列结构,其中每个键对应一个“值”,这是一个数组。我定义并构建了如下哈希结构: my %app push @{$app{$id}}, $id; 我试图让这个散列结构被另一个散列结构索引 my %chainro 它本身就是散列的散列。看起来有三种不同的方法连接这两种结构,我不确定哪一种是正确的 $chainro{$ro}{$id} = $app{$id} @{$chainro{$ro}{$id}} = @{$app{$id}} $chainro{$ro} = \%app; 最后一
my %app
push @{$app{$id}}, $id;
我试图让这个散列结构被另一个散列结构索引
my %chainro
它本身就是散列的散列。看起来有三种不同的方法连接这两种结构,我不确定哪一种是正确的
$chainro{$ro}{$id} = $app{$id}
@{$chainro{$ro}{$id}} = @{$app{$id}}
$chainro{$ro} = \%app;
最后一点:
my %app
push @{$app{$id}}, $id;
$chainro{$ro} = \%app;
然后您可以访问一个元素:
$chainro{$ro}->{$id}->[$index]
当您使用引用而不是哈希或数组本身访问哈希或数组时,需要
->
。第一行后面缺少分号,应该是“my%app;”Dan,谢谢。要评估元素,为什么不能使用$chainro->{$ro}->{$id}->[$index],因为%chainro
是散列,而$chainro
不存在。如果您希望使用$chainro->stuff
,则$chainro
必须是一个引用。例如,您可以说$chainro=\%chainro
,然后您给出的表达式将是有效的。Dan谢谢。你能详细解释一下为什么$chainro{$ro}{$id}=$app{$id}和{$chainro{$ro}{$id}={$app{$id}不正确吗?这是什么:push{$app{$id},$id
?那是打字错误吗?对散列中的键和值使用相同的变量是没有意义的。