#!/opt/bin/perl5 my %c; b(\%c); #print as normal if(0) { for $i (keys %c) { print "$i = $c{$i}\n"; for $a (keys %{$c{$i}}) { print "$i = $c{$i} = $c{$i}{$a}\n"; } } } sub b { my($c)=@_; $$c{b} = 'b'; $$c{c} = 'c'; $$c{b}{a} = 'ba'; $$c{b}{v} = 'bv'; $$c{b}{v}{g} = 'bvg'; print "printing c{b}{v} = $$c{b}{v}\n"; recref($c,""); } #pass this function a reference to a hash sub recref { my($cref,$str)=@_; my $i; my $prefix; for $i (keys %{$cref}) { $prefix = $str . "." . $i; print "$prefix = $$cref{$i}\n"; recref($cref->{$i},$prefix); } }