1: sub sort_top { 2: my($top, $func, @arr) = @_; 3: my @top = sort $func @arr[0..$top-1]; 4: for my $i ($top..$#arr) { 5: my $x = -1; 6: for (my $t = $#top; $t >= 0; $t--) { 7: local ($a, $b) = ($arr[$i], $top[$t]); 8: last if($func->() == 1); 9: $x = $t; 10: } 11: if($x != -1) { 12: splice(@top, $x, 0, $arr[$i]); 13: pop(@top); 14: } 15: } 16: return @top; 17: }