sub lookup { die unless wantarray; # call me in list context only my $item = shift; return values %{$EMail{$item}} if exists $EMail{$item}; # category name for my $cat (keys %EMail) { return $EMail{$cat}{$item} if exists $EMail{$cat}{$item}; # single name } return; # not found } sub GetEmailFor { my @results = map { lookup($_) } @_; return join ",", @results; } #### use Memoize; memoize('lookup'); sub I_have_changed_EMail { unmemoize('lookup'); memoize('lookup'); }