use strict; my %hash1 = ( A => 5, B => 7, C => 2, D => 8, ); my %hash2 = ( 1234 => "A,C", 4567 => "A,D", 5678 => "C", ); my @a = split ",", join ',', values %hash2; my $found = 0; foreach my $key ( keys %hash1 ) { $found = 0; foreach my $val ( @a ) { $found = 1 if $val eq $key; } print "$key => $hash1{$key}\n" if !$found; }