2

Perlを手に入れたばかりです。ハッシュ値へのアクセスについて少し混乱しています。以下は、ハッシュ内のハッシュの値にアクセスしようとしているコードです。シンプルなテキスト エディタを使用してコーディングしているため、何が問題なのかわかりません。助けてください

my %box = (
    Milk => {
        A => 5,
        B => 10,
        C => 20,
    },
    Chocolate => {
        AB => 10,
        BC => 25,
        CD => 40,
    },
);

foreach my $box_key(keys %box) {
    foreach my $inside_key (keys %box{box_key})
    print "$box_key"."_$inside_key""is for rupees $box{box_key}{inside_key}";
}
4

2 に答える 2

3

構文が

keys %hash

ハッシュの場合、それは

keys %{ ... }

ハッシュ参照用。この場合、参照は に保存される$box{$box_key}ため、使用します

keys %{ $box{$box_key} }

また、実際にandという名前の要素が必要ないくつかの場所で、box_keyandという名前の要素にアクセスしています。inside_key$box_key$inside_key


最後に、変数名の周りにカーリーを使用して、変数名がどこで終わるかを Perl に指示できます。


for my $box_key (keys %box) {
   for my $inside_key (keys %{ $box{$box_key} }) {
      print "${box_key}_$inside_key is for rupees $box{$box_key}{$inside_key}\n";
   }
}
于 2013-06-11T05:26:21.450 に答える