とりあえず、こんな感じでしょうか。
=====
limit を指定しない場合、Ruby は末尾の空フィールドを 1 つ捨て、Perl は
すべての末尾の空フィールドを捨てる。
$ ruby -e 'p "1:2:3:::".split(/:/)'
["1", "2", "3", "", ""]
$ perl -e 'print join("/", split(/:/, "1:2:3:::")), "\n"'
1/2/3
=====
limit に正の数を指定した場合、どちらも最大フィールド数は limit になる
が、Ruby は末尾の空フィールドを1つ捨て、Perl は末尾の空フィールドを捨
てなくなる。
$ ruby -e 'p "1:2:3:::".split(/:/, 8)'
["1", "2", "3", "", ""]
$ perl -e 'print join("/", split(/:/, "1:2:3:::", 8)), "\n"'
1/2/3///
=====
limit に 0 を指定した場合、limit を指定しないのと同じ。
$ ruby -e 'p "1:2:3:::".split(/:/, 0)'
["1", "2", "3", "", ""]
$ perl -e 'print join("/", split(/:/, "1:2:3:::", 0)), "\n"'
1/2/3
=====
limit に負を指定した場合、Ruby では 2 とみなされる? Perl では末尾の
空フィールドを捨てなくなる。
$ ruby -e 'p "1:2:3:::".split(/:/, -1)'
["1", "2:3:::"]
$ perl -e 'print join("/", split(/:/, "1:2:3:::", -1)), "\n"'
1/2/3///
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>