sub uid_lastname { my( $uid, $firstname ) = @_; my @lastnames; keys %$uid; while( my( $key, $val ) = each %$uid ){ if( $val->{firstname} eq $firstname ){ push @lastnames, $val->{lastname}; } } return @lastnames if wantarray; return $lastnames[0] if @lastnames; die "firstname not found"; }