my @new; foreach $fn (@old) { $new[$fn->{FirstNum}]= $fn; delete $fn->{FirstNum}; } #### my %new; foreach $fn (keys %old) { $new{$fn->{FirstNum}}= $fn; delete $fn->{FirstNum}; }