use Data::Alias; sub sortQ2 { my ($s, $e, $dst) = @_; alias my @dst = @$dst; my $m = $s - 1; ($dst[$_] < $dst[$e]) && ( ++$m, ($dst[$m], $dst[$_]) = ($dst[$_], $dst[$m]), ) for ($s .. $e-1); ++$m; ($dst[$m], $dst[$e]) = ($dst[$e], $dst[$m]); ($s < $m - 1) && sortQ2($s, $m-1, $dst); ($m + 1 < $e) && sortQ2($m+1, $e, $dst); }