Discipulus3 => sub{ my @list = sort { (( $a >= 0 and $b >= 0) or ($a < 0 and $b < 0 )) ? $a<=>$b : $b<=>$a } @input; Compare(\@list,\@output) or die "@list" if DO_CHECK; }, #OUTPUT Rate Discipulus Discipulus3 Discipulus2 Discipulus 46252/s -- -14% -46% Discipulus3 53805/s 16% -- -38% Discipulus2 86380/s 87% 61% --