my %h2=( 'AAA' => 'aaa', 'BBB' => 'bbb', 'CCC' => {'A1' => a1, 'B1' => 'b1', 'C1' => {'A2' => a2,'B2' => 'b2','C2' => 'c2END'}}, 'DDD' => 'ddd', ); my $ref2 = \%h2; &ddump($ref2); sub ddump { my $ref = shift; my $deep = shift||1; foreach my $k (sort keys %{$ref}) { if (ref( ${$ref}{$k})) {print "\t" x $deep."$k =>\n"; &ddump (${$ref}{$k}, ($deep+1)) } else {print "\t" x ($deep)."$k => ${$ref}{$k}\n";} $deep-1; } }