あおきです。

  In mail "[ruby-list:26823] Re: cgi.rb and Regexp::last_match"
    Wakou Aoyama <wakou / fsinet.or.jp> wrote:

> 青山です。

> net/* に grep $~ をかけて確認してみましたが、$~ すなわち、
> Regexp::last_match はマッチの判定には使用していないようなので、
> この件と Regexp::last_match が常に MatchData を返す、Match していない
> MatchData という件は、独立していると思われる、という事を書いておきます。

確かにそのとおりです。でも独立しているということは、逆に言えば、
このことは「last_match は nil を返さない」という仕様に説得力を
与える理由でもないということですよね。


> というか、$~ ってあまり使われていないですよね。たぶん。$& を使っている
> ような気がします。すなわち、Regexp::last_match[0]

ということならば、$& 相当のクラスメソッドを用意すれば解決しませんか?
そもそも last_match は $ 変数を使いたくないということでリクエスト
して作ってもらったのですから、$~ だけでなくて $& に対応するものが
あってもおかしくないと思います。

# 仕様変更よりメソッド追加のほうがまつもとさんのハートを動かし
# やすいという経験則を利用した高級説得技術! すごいっ!

## よい名前が提案できるとさらに効果的だが下手な名前を提案すると
## 逆効果になるのでうっかり書き忘れておくという念の入れよう!

### でも結局「いい名前があれば追加しましょう。」と言われるので
### 意味ない!  (というような余計なことは書かないほうがよい。)


> Regexp#match に関しては、net/pop.rb, net/http.rb の他にも、getopts.rb
> でも真偽の判定に使用されていますし、確かにこれは簡単には変更できないかも。

結局全部ぼくが書いたやつですね……  (^^;;;;
-------------------------------------------------------------------
青木峰郎