我想知道是否可以在 perl 中执行以下操作。它将节省 40-50 行代码。
我有一个哈希数据结构,如下所示:
hash_Ref->{a}->{b}->{c}->{d}->{e}->{'count'}=30
我想知道有没有办法可以做到以下几点:
my $hash_ref_1 = ash_Ref->{a}->{b}->{c}->{d};
然后使用:
$hash_ref_2->{e}.
所以总而言之,我想将哈希引用存储到变量中层次结构中的点“x”,然后访问点“x”指向的引用。我认为这在上面的例子中更加清楚。
更多细节
我尝试了几件事,但似乎对我不起作用。我正在复制代码,但不是我试图复制哈希的所有内容。我得到的输出也是这样的
$VAR1 = {
'e' => {
'count' => 2
},
'c' => {
'count' => 2
},
'a' => {
'count' => 2
},
'b' => {
'count' => 2
},
'd' => {
'count' => 2
}
};
我会期待这样的事情:
'a' => { 'count' => 2, 'b' => { 'count' => 2, 'c' => ......} }
这是我使用的一些代码:
use strict;
use Data::Dumper;
my @array1 = ('a','b','c','d','e');
my @array2 = ('a','b','c','d','e');
my $hash;
build_hash(\@array1);
build_hash(\@array2);
sub build_hash {
my @array = @{shift @_};
my $hash_ref;
for ( my $i =0 ; $i < scalar @array ; $i++ ){
print "$i \t $array[$i] \n";
if ( exists $hash->{$array[$i]} ){
$hash->{$array[$i]}->{'count'}++;
}
else{
$hash->{$array[$i]}->{'count'}=1;
}
}
print Dumper($hash);
}
我想根据 perl 中的元素按顺序构建哈希引用的层次结构,并可能使用一个循环,就像我在示例代码中尝试做的那样。
谢谢!-阿比