From: Wakou Aoyama Date: 1998-10-29T23:00:49+09:00 Subject: [ruby-list:10465] Re: split とりあえず、こんな感じでしょうか。 ===== 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