次のことが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 の要素に基づいて、場合によっては 1 つのループを使用して、ハッシュ参照の階層を構築したいと考えています。
ありがとう!-アビ