$nodes{$_}{name}||=$_ for $c,$p; #### delete $nodes{$_} for @children; #### 'name' => 'a', 'kids' => { 'c' => { 'name' => 'c', 'kids' => { 'e' => { 'name' => 'e' }, 'f' => { 'name' => 'f' #### a a:c a:c:e a:c:f #### print $hash->{$key}->{'name'} . "\t"; print $hash->{$key}->{'addres'} . "\n";