use strict; use warnings; my %foo = ( test => { alpha => 'beta', gamma => 'delta', }, ); while ( ( $foo{zaehler}, undef ) = each %{$foo{test}} ) { test (\%foo); } sub test { my ($bar) = @_; print "habe " . $bar -> {zaehler} . "\n"; }