わたなべです.

原さん:
:"\r" ではなくて "\n" ですよね?

ちょっとわかりにくい理由でしたね. ruby の chop は "\r\n" も 
chop するので, original に任せたという意味です. かりに仕様変
更があってもあれならいいかなと.

:ruby で "あ"[0] =~ /./ が偽になるとは知りませんでした。serow
:氏の jperl では 真になります。

jperl の場合 substr が日本語対応してないので, 漢字の第 1 バ
イト目と 2 バイト目で分かれてしまった場合, chop することで対
応できます. つまり 1 byte 多めに substr しといて日本語対応し
てる chop に任せる.

:もともと日本語の構造を持っていることを前提にすれば、
:sub!(/(.|\n)$/, '') でもいいわけですよね。

上記の用途にも使いたかったので, あのようにしました.
"\r" があるというよりも nil になる場合があるからと言ったほう
が正しかったかもしれない.

:    if self =~ /(.)$/ && $1.size == 2
:      original_chop!
:    end
:
:と書くとか。Perl 書きにはまどろっこしい事もありますが。

最初はこう書きました. でもパターンマッチングが FALSE じゃな
いのに $1 が nil という変な場合があってあのように書き換えた
んですが, 今やってみるとそんなことは起きないですね. 正月ぼけ
してたんでしょう. :-)

-- 
わたなべひろふみ