http://www.perlmonks.org?node_id=421181


in reply to Order-Preserving and Unique: List Cleanup

Here's another way:
sub uniq { my %h; @h{@_} = (0..$#_); @_[ sort { $a <=> $b } values %h ] }