From: matz@... (Yukihiro Matsumoto) Date: 1996-12-09T11:27:27+09:00 Subject: [ruby-list:1210] Re: ruby 0.99.3-961204 まつもと ゆきひろです. In message "[ruby-list:1208] Re: ruby 0.99.3-961204" on 96/12/08, Shin-ichiro Hara writes: | |原です。 |ここでも "\n-A" の様な表現は - による展開はしてくれません。 うーん.そうですね.考えてみましょう. |> sオプションとかは悩ましいですねえ. | |これは . で \n を排除するのを止めるだけでは?中身を知らずに |物を言ってますが。(^^; いや,regexp.cの中身を変更するとまたややこしいバグを生みそう で恐いというだけのことです.多分,やれば簡単なんでしょうけど ね. |なるほどこれでもいいですね。大域変数を使うのがちょっと気 |になるけど。$~ って大域変数ですよね?そういえば $~ という |のはのぞいてみたことがありませんでした。これの正体は何で |しょう。謎めいてますね。 $~と$_だけは実はローカル変数です.特別扱いですから謎は多いで しょうね. |String#grep が行単位でなくなるということは、each が行単位なの |で、grep が each から Enumerable モジュールで直接派生したもの |でなくなりますね。いいのかな。 やっぱり良くないですね.結局,scanというメソッドを用意しまし た.scanというのはscanfからの連想です. String#scan(re) p "abc".scan(/(.).(.)/) => ["a", "c"] "abc123ABC".scan(/(.).(.)/) { |a| p a} => ["a", "c"] ["1", "3"] ["A", "C"] という感じになります. |試しに上の grep_ch を作ってみたんですが、やはり | |"abc".grep_ch(/(.)/) { |x| print $1, "\n" } | |としても $1 が有効にならないのでいまいちでした。 そうですね.この場合は多分,grep_chで正規表現によるマッチを 行っていせいだと思うのですが,たとえマッチを行っていても変数 $~はローカル変数ですから値を持ち出せませんね.今の仕様は良く ないのかなあ. |#ところで、今 |#"abc" =~ /./; print $~, "\n" |#をしたら Segmentation fault を起こしました。(^^; すみません.バグです. まつもと ゆきひろ /:|)