PerlのsplitとJavaScriptのsplit

split関数の挙動が違うことに最近気付いた。正確にはPerlの第3引数とJavaScriptの第2引数とでの挙動なんだけど。

JavaScriptの場合

var str = "a b c d e f g";
var array = str.split(/\s+/, 3);
// array.toSource() = ["a", "b", "c"]

Perlの場合

my $str = "a b c d e f g";
my @array = split(/\s+/, $str, 3);
# $array = ["a", "b", "c d e f g"]

Perlの場合は後続がそのまま最後の要素に入るのに対して、JavaScriptの場合は抜け落ちてしまう。個人的にはPerlの挙動の方が好きだなあ。