my %by; @by{ map $_->{num}, @$data } = 0 .. $#$data; @sorted_unique = @{$data}[ @by{ sort keys %by } ]; #### my %by = map{ $_->{num} => $_ } @$data; @sorted_unique = @by{sort keys %by}; #### @sorted_unique = @{{ map{ $_->{num} => $_ } @$d }}{ sort map $_->{num}, @$d };