ハッシュ値へのアクセスに問題があり、何が間違っているのかわかりません。私はいくつかのPerlを実行しますが、ハッシュはあまり使用しません。
ハッシュのハッシュでハッシュ値にアクセスしようとしています。
これが私がハッシュを構築する場所です
sub buildList
{
my ($name,$gender,$father,$mother,$age);
my %bear_ref=();
open IN, "<input.txt" or die "can't open file";
while(<IN>) {
($name, $gender, $father, $mother, $age ) = split(/:/);
$bear_ref{ $name } { 'gender' } = $gender;
$bear_ref{ $name } { 'mother' } = $father;
$bear_ref{ $name } { 'father' } = $mother;
$bear_ref{ $name } { 'age' } = $age;
}
close IN;
return \%bear_ref;
}
ハッシュ内のキーを反復処理しているときにリストにアクセスできますが、直接アクセスすることはできません。したがって、「keys()ループ」から値を取得する方法と関係があると思います。
for my $name (keys %$ref) {
$father= $ref->{ $name }->{ 'father'}; # works
$mother= $ref->{ $name }->{ 'mother'}; # works
getTree($name, $ref);
}
sub getTree
{
my $bear = shift;
my $ref = shift;
my ($father, $mother);
$father= $ref->{ $name }->{ 'father'}; # doesn't work...have also tried with %$ref->
$mother= $ref->{ $name }->{ 'mother'}; # doesn't work...have also tried with %$ref->
print "$father : $mother\n";
}
どんな助けでもいただければ幸いです。