まつもと ゆきひろです.

In message "[ruby-list:1208] Re: ruby 0.99.3-961204"
    on 96/12/08, Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> 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 を起こしました。(^^;

すみません.バグです.
                                まつもと ゆきひろ /:|)