use warnings; use strict; use feature 'say'; use Var::Pairs; my %hash; @hash{"a".."d"} =1..4; sub till { my $goal = shift; while (my $next = each_pair %hash) { say $next->key, ' had the value ', $next->value; last if $next->key eq $goal; } say "-"x10 . "exit"; } till("a"); till("a"); till("a"); till("a"); #### /usr/bin/perl -w /home/lanx/pm/t_var_pairs.pl a had the value 1 ----------exit d had the value 4 b had the value 2 c had the value 3 ----------exit a had the value 1 ----------exit d had the value 4 b had the value 2 c had the value 3 ----------exit Compilation finished at Sun May 6 21:54:21