えぐち@エスアンドイー です。

>>> On Wed, 28 Oct 1998 19:03:10 +0900, flare / kcn.or.jp (Takashi Ikeda) said:

flare> ふれあです。
flare> 
flare> 暇潰し^H^H^H勉強で Perl で書いたものを Ruby に移しているので
flare> すが、split の挙動が Perl とは違うのですね。

たしかに違う部分はありますね。
でも、違う部分の認識がちょっと違うような、、、

flare> rbc0> '1:2:'.split ':'
flare> ["1", "2"]
 これは perl と *同じ* です。

flare> rbc0> ':'.split ':'
flare> [""]
 これは perl と違う
 perl で  scalar(split(':', ":")) は 0

より顕著な例を挙げると。

 % perl -e 'print scalar(split(":", "::::::::::")) . "\n"'
0
 % ruby -e "p '::::::::::'.split(':').size"
10

flare> 具体的には、'1:2:' で ["1", "2", ""] が出てくれたら有難いの
flare> ですが、何か事情があるのでしょうか?

perl も ("1", "2") を返しているようです。
私が見た限り perl[45] 両方とも同じでした。

'1:2:'.split(':') が ["1", "2", ""] となって欲しい理由というと、、

	% ruby -e 'p "a:b:c:".split(":").join(":")'
	"a:b:c" ==> "a:b:c:"

的な対称性ですか?

それとも awk との互換性が問題ですか?

個人的には、前者の対称性の意味で、ふれあ さんのおっしゃるように、
'1:2:'.split(':') が ["1", "2", ""] を返すとシックリ来るのですが、
、、、もはや ここも いいぢると大変な事になるでしょう。

	えぐち