sub traverse { my $hash = shift; print "do something with: @_\n" if @_; return if not ref $hash or ref $hash ne 'HASH'; traverse($hash->{$_}, $_) for keys %$hash; } traverse(\%tmp);