my %names=(one => [1,2,3], two => [4,5,6], deux => [4,5,6], three => [7,8,9] ); my %values; for (keys %names){ delete $names{$_} if $values{ join ( ',', @{$names{$_}} ) }++; } for (keys %names){ print "$_ => ", join (", ", @{$names{$_}} ), "\n"; }