In article <1017631490.892199.30753.nullmailer / ev.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> いいえ、nilも正当な値でしたね。直します。

なるほど。

さて、それはそれとして、$~ がローカルスコープであり、$~ にいくら代入し
てもメソッドの外には影響を与えられないことに今更ながらに気がつきました。
外に影響を与える方法ってあるんでしょうか?

たとえば、String#scan の wrapper を次のように定義しても、$~ に関する挙
動は一致しません。$~ に関する挙動も一致するような wrapper って書けるん
でしょうか?

% ruby -e '
"abc".scan(/./) { p $~.to_a }

class String
  def scan2(*args, &block)
    scan(*args, &block)
  end
end

"abc".scan2(/./) { p $~.to_a }
'
["a"]
["b"]
["c"]
["c"]
["c"]
["c"]
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)