in reply to (another) HoH question

use Data::Dumper; my %hash; $hash{tree} = 4; $hash{tree}->{apple} = 6; print Dumper \%hash;

Run that. When you understand why "4" does not appear in the output, then you will find enlightenment.

Update: d'oh! "6" doesn't appear in the output. In my defence, the above code was typed on a mobile device where I didn't have a copy of Perl to test it. A flimsy defence, I admit.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: (another) HoH question
by muba (Priest) on Jun 23, 2012 at 18:33 UTC

    No matter how I twist or turn it, "4" does appear in the output.

    # With strictures: use strict; use warnings; use Data::Dump 'pp'; my %hash; $hash{tree} = 4; $hash{tree}->{apple} = 6; pp \%hash; __END__ Can't use string ("4") as a HASH ref while "strict refs" in use at G:\ +x.pl line 7.
    # Without strictures: use warnings; use Data::Dump 'pp'; my %hash; $hash{tree} = 4; $hash{tree}->{apple} = 6; pp \%hash; __END__ { tree => 4 }

    No offense, but the real problem is that the OP doesn't seem to understand that the value part of a key/value pair can only hold one value, and consequently the design of his data structure is flawed.