とりあえず、こんな感じでしょうか。


=====
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>