my %duplicates = do{ local %_; $_{$_}++ for(@array1, @array2, @array3); delete @_{ (map{ ($_{$_}==1) ? $_ : () ; } keys %_ ) }; %_; }; dump_ref(\%duplicates, '%duplicates'); __OUTPUT__ %duplicates = { '10' => 2, '11' => 2, '12' => 2, '13' => 2, '14' => 2, '15' => 2, '16' => 2, '17' => 2, '18' => 2, '19' => 3, '20' => 3, '21' => 2, '22' => 2, '23' => 2, '24' => 2, '25' => 2, '26' => 2, '27' => 2, '28' => 2, '29' => 2, '30' => 2 }