my @allvalues; for my $i ( 0 .. $#AoH ) { push ( @allvalues, $AoH[$i]{ page } ); } #### my @allvalues = map $_->{page}, @AoH; #### # count occurrences of each value my %count; ++$count{$_->{page}} for @AoH; # keep only those copies that aren't duplicated @AoH = grep $count{$_->{page}} == 1, @AoH; #### # replace @AoH with @AoH = # only grep # the hashrefs whose 'page' value appears exactly once $count{$_->{page}} == 1, # of the current @AoH @AoH;