use strict; use warnings; use Data::Dumper; my $hash1 = {qw/ name1 ABCD name2 BCD name3 ASCDA name4 AAAAA /}; my $hash2 = {qw/ name1 0.2 name5 0.3 name4 0.0002 name7 0.222 /}; my $hash_result = sub{ my ($hash1,$hash2) = @_; foreach my $key (sort keys $hash1){ print "\'hash1 value: $hash1->{$key}\' AND \'hash2 value: $hash2->{$key}\' AND shared key: \'$key\'\n" if(defined($hash2->{$key})); } }; $hash_result->($hash1, $hash2);