my @non_duplicates = do{ #lets use a hash since we want unique values #and localize it so its a fresh copy local %_; #undef the values of this localized hash #while assigning your values as keys undef @_{@{$map{$$row[1]}{$$row[2]}}}; #call keys on the hash to get a list of your #unique values keys %_; } #assign our unique list back to your original structure. $map{$$row[1]}{$$row[2]} = \@non_duplicates;