in reply to discussion: What should split( /PATTERN/, EXPR, 0 ) return better?

People are always forgetting they can write subs.

sub split0($;$$) { my $pattern = shift; my $s = @_ ? shift : $_; my $limit = @_ ? shift : -2; return $s if $limit == 0; return split($pattern, $s, $limit == -2 ? 0 : $limit); }
or
sub split0($;$$) { @_ == 1 && return split($_[0]); @_ == 2 && return split($_[0], $_[1]); $_[2] == 0 && return $_[1]; return split($_[0], $_[1], $_[2]); }