わたなべです. 原さん: :"\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 という変な場合があってあのように書き換えた んですが, 今やってみるとそんなことは起きないですね. 正月ぼけ してたんでしょう. :-) -- わたなべひろふみ