in reply to Can Schwartzian transform be modified to sort an arrayref uniquely?

This is probably more than you wanted to know, but it does answer your question directly (how to sort and unique in one step).
It's a suggestion MeowChow posted last summer in a discussion of sorts.  It uses a hash slice to store the "transform" with the array index and an array slice to return the elements sorted on the transform key.  It does not scale well(!).
my %by; @by{ map $_->{num}, @$data } = 0 .. $#$data; @sorted_unique = @{$data}[ @by{ sort keys %by } ];

update:   Actually, I now see that the indexing is totally superfluous, so it would be:
my %by = map{ $_->{num} => $_ } @$data; @sorted_unique = @by{sort keys %by};
which actually begins to look reasonable.  On the other hand, the sure enough do-it-all-in-one-line with an anonymous hash:
@sorted_unique = @{{ map{ $_->{num} => $_ } @$d }}{ sort map $_->{num}, @$d };
goes through the array twice and also builds a hash.  And it even sorts the whole array before selecting unique elements which is the worst way to do it as khkramer demonstrates above.  It is kinda neat though.

  p