Search code examples
perlhashperl-data-structureshash-of-hashesperl-hash

Perl:Access values of hash inside a hash


I have just picked up Perl. I have a little confusion with accessing hash values. Below is the code where I am trying to access the values of a hash inside a hash. Since am using a simple text editor to code, I am not able to figure out what can be the problem. Please help

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}";
}

Solution

  • ikegami has explained it very well and I feel that you are still missing something in your code that's why you are having a problem, try the below code, hope it helps you.

    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}\n";
    
        }
    }
    

    Output:

    Chocolate_CD is for rupees 40
    Chocolate_BC is for rupees 25
    Chocolate_AB is for rupees 10
    Milk_A is for rupees 5
    Milk_C is for rupees 20
    Milk_B is for rupees 10