北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

splitと空文字列(2)

で、実はさっきのperlのsplitの謎が解けたのは、String.split()のjavadocを読んだのがきっかけです。String.split()もLimitを省略(又は0)すると空の文字列を破棄しますが、わかりやすくそれが明記されています。サンプルの部分に、負値を与えた場合の挙動もはっきりと定義されており、末尾の空文字列も返して欲しい時には負値*1を渡すといいことが分かります。


この、LIMITに-1を渡した場合の挙動はperlでも同じでした。先のコードで、末尾の空文字列も取りたい場合は、

print '[', join(', ',
    split(qr(/), $csv_string, -1)
), "]\n";

とするといいでしょう。

2009/1/30補足

If LIMIT is negative, it is treated as if an arbitrarily large LIMIT had been specified.

perlfunc

2011/12/5追記

JSでは挙動が違うらしい。

*1:"a,b,c,".split(",", -1)みたいに-1を与えるのが妥当でしょう