use strict; use warnings; my %hoa = ( array1 => [ 1,2,3 ], array2 => [ 7,8,9 ], array3 => [ 1,2,3 ], array4 => [ 7,8,9 ], array5 => [ 9,9,9 ], array6 => [ 1,2,3 ], ); my %counts; while (my ($k, $v) = each %hoa) { push @{$counts{join '|', @$v}}, $k; } print "Duplicates:\n"; for (keys %counts) { next if @{$counts{$_}} < 2; print join ', ', @{$counts{$_}}; print "\n"; } __END__ Duplicates: array1, array3, array6 array4, array2