in reply to Filtering a Hash

Atm you are comparing array to itself. So it means that all all same, thus removed. If you want to test to one before, then something like this is needed. Note that I haven't used List module, so don't know anythign about that.
sub filter { my %hoa = @_; my %filtered_hoa; my @key = (sort {$hoa{$a}[1] <=> $hoa{$b}[1] } keys %hoa); my @flag=(); foreach my $key (@key) { my @submt_only = @{$hoa{$key}}[3..$#{$hoa{$key}}]; #Check if the current array is equiv. with *one* before my $lc = List::Compare->new(\@flag,\@submt_only); my $eq = $lc->is_LeqvlntR; if ($eq == 0 ) { #if they are not equivalent, assign them to a hash $filtered_hoa{$key} = $hoa{$key}; } else { #otherwise skip them next; } @flag = @submt_only; } return %filtered_hoa; }
Above code completely untested.