use strict; use warnings; use List::Compare::Functional qw(is_LequivalentR); use Data::Dumper; my @AoA = (['a','b','c'], ['a','b','c'], ['a','b','d'], ['a','b','d']); my @uAoA; skip: for my $ia (0..(@AoA-1)){ for my $ir (0..(@uAoA-1)){ next skip if is_LequivalentR ([\@{$AoA[$ia]}, \@{$uAoA[$ir]}]); } push @uAoA, [@{$AoA[$ia]}]; } print Dumper \@uAoA;