use Data::Dumper; my @AoA = (['a','b','c'], ['a','b','c'], ['a','b','d'], ['a','b','d']); my @uAoA = uniq(@AoA); sub uniq () { #updated, the prototype was taken out my %h; map { $h{$_}++ == 0 ? $_ : () } @_; print Dumper \%h; } #### $VAR1 = { 'ARRAY(0x224ff8)' => 1, 'ARRAY(0x18c3a2c)' => 1, 'ARRAY(0x1875904)' => 1, 'ARRAY(0x224ef0)' => 1 }; #### use Data::Dumper; use List::MoreUtils qw(uniq); use strict; use warnings; my $a = ['a','b','c']; my $b = ['a','b','d']; my @AoA = ($a, $a, $b, $b); my @uAoA = uniq(@AoA); print Dumper(\@uAoA);