my %uniq; my @new_AOA; foreach my $A (@$AOA) { my $key = $A->[1] . '-' . $A->[3]; push @new_AOA, $A unless $uniq{$key}++ } #### my %uniq; my @new_AOA = grep { !( $uniq{$A->[1] . '-' . $A->[3]}++ ) } @AOA;