青山です。

Tue, Mar 16, 1999 at 10:25:08AM +0900 において
Yukihiro Matsumoto さん曰く:

> で,$*=0 相当の挙動を用意して,そっちをデフォルトにするのは
> どうだろうか(そうすれば \n に . がマッチしない問題も解決でき
> る)などと考えたんですが,実装の方針はたっても,それが妥当で
> あるのかは一晩考えても判断できませんでした.
> 
> # 実装する夢を見てしまった ^^;;;
> 
> $*がなければ /sは不必要で /m だけあれば良いので,オプション
> 文字の重複の問題もありません.後は
> 
>   * それで使いやすいのか
>   * 互換性は
> 
> という問題ですね.また,Perlの /m の挙動を見るとなんかちょっ
> と違うような気がするんですけど."\n" =~ /\n$/  は成立するし.
> # なんか根本的に考え方が違う?

"\n" =~ /\n$/ については [ruby-dev:6277] に書いたように、^ の挙動から
すると $ の挙動が変ではないかという疑問はあります。

しかし、$* がなければ /s は不要というのはちょっと違いまして、$* が影響
を与えるのは ^$ だけです。. の挙動に関しては /s によって変わります。

Mastering Regular Expressions では default, single-line, multi-line,
crean multi-line, obsolute multi-line なんて呼んでいるようです。ちょっ
と表の形はかえますが、こんな感じです。

default              /s /m の指定無し $*=0    ^$ は文字列 . は \n 含まず
single-line          /s の指定時              ^$ は文字列 . は \n 含む
multi-line           /m の指定時              ^$ は改行   . は \n 含まず
clean multi-line     /m と /s の両方指定      ^$ は改行   . は \n 含む
obsolute multi-line  /s /m の指定無し $*=1    ~$ は改行   . は \n 含まず


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>