use Data::Dumper; use strict; my $AoH = [ { page => 'spring', chap => 'spring'}, { page => 'winter', chap => 'winter'}, { page => 'fall', chap => 'fall'}, { page => 'summer', chap => 'summer'}, { page => 'spring', chap => 'spring'} ]; my %uniq = map { $_->{page} => ; $_->{chap} => 1 } @$AoH; @$AoH = map { { page => $_ };{ chap=>$_ } } keys %uniq; print Dumper ($AoH); #### $VAR1 = [ { 'chap' => 'summer' }, { 'chap' => 'winter' }, { 'chap' => 'fall' }, { 'chap' => 'spring' } ];