sub rec { my $hash = shift; my $level = shift; return if $level > 1; while ( my ( $k, $v ) = each %$hash ) { exit 0 if ++$count > 10; print "$level: $k => $v\n"; for (1..3) { rec( $hash, $level + 1 ); print "$_\n"; } } }