my @common = grep exists $hash2{$_}, keys %hash1; my @unique1 = grep !exists $hash2{$_}, keys %hash1; my @unique2 = grep !exists $hash1{$_}, keys %hash2; #### my %t; $t{$_} .= "1" for keys %hash1; $t{$_} .= "2" for keys %hash2;