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


in reply to Re: Trudging along the learning perl path.
in thread Trudging along the learning perl path.

That's cheating a bit, because it only works with arrays of nonnegative integers. The OP version works with any numeric elements (<=> comparison). Interesting angle nonetheless.

The hashless solution doesn't actually need any sorting. The following is a brute force filter, which maintains the input order of elements:

use v5.14; use warnings; sub uniq { my @u; for my $x (@_) { next if grep { $x == $_ } @u; push @u, $x; } return @u; } say join ', ', uniq(29,24,0,24,24,12,0,10,10,19,17,15,13,1,12,12,24);

It's of course asymptotically slower than sorting (O(n**2) vs O(n*log(n))), but if the input happens to be mostly duplicates, it will be faster in practice.