#!/usr/bin/perl -w use strict; my %hash1 = (TEXT => 25, Text => 25, Wibble => 20, foo=>42, BAZ => 0); my %hash2 = (text => 25, TexT => 25, wibble => 20, bar=>43, bAz => -1); my @dups = do{ local %_; $_{$_}++ for(map lc, (keys %hash1, keys %hash2)); delete @_{map $_{$_} == 1 ? $_ : (), keys %_}; sort keys %_; }; print "@dups \n";