sub my_sort { SUB_BODY: { my $i = $_[0] || 0; if ( defined $a->[$i] && defined $b->[$i] ) { if ( my $result = $a->[$i] <=> $b->[$i] ) { return $result; } ++$_[0]; redo SUB_BODY; } return defined $a->[$i] ? 1 : -1; } }