my %hash = qw/ one 1 two 2 three 3 four 4 five 5 /; print "pass 1-----\n"; once_thru(); print "pass 2-----\n"; once_thru(); sub once_thru { while ( my ( $k, $v ) = each %hash ) { last if $k eq 'five'; print "$k $v\n"; } } __END__ pass 1----- three 3 pass 2----- one 1 two 2 four 4