sub uniq { local $_; my %seen; return grep { !$seen{$_}++ } @_; } print uniq 0,0,1,2; # good: prints 0,1,2 print sort uniq 0,0,1,2; # bad: prints 0,0,1,2 #### print sort uniq(0,0,1,2); #### print sort grep {1} uniq 0,0,1,2;