my $result = data(); foreach my $key (keys %{ $result }) { my $value = $result->{$key}; print "User Name = $key - City: $value\n"; } sub data { ... db code stuff ... my %no_name_found; if(@$sql) { for(my $i = 0; $i < @$sql; $i++) { my $user_name = $sql->[$i]{'username'} || ''; my $city = $sql->[$i]{'city'} || ''; # verify user name, this name will come back from this sub check_name my $no_name = check_name ( user => $user_name, ); push @{ $no_name_found { $user_name } }, $city; } } return \%no_access_brks; }