まつもと ゆきひろです

In message "[ruby-dev:6331] Re: Ruby 1.3.1-990315"
    on 99/03/16, Wakou Aoyama <wakou / fsinet.or.jp> writes:

|> あー,そーかあ.安易に変更したけどいろいろ大変だったかも.
|> どうするのが望ましいのかなあ.
|
|元の主張を通すのならば、
|
|$ は \n の直後にマッチするアンカーであるから、/\n$/ という表現は蛇足で
|あり、素直に /\n/ と書くべきである。また、文字列の末尾の \n にマッチさ
|せたい場合は /\n\Z/ と書くべきである。
|
|とかでしょうかね。

ま,それがスジではありますが,スジを通すばかりでも住みにくい
世の中ですから.

|/\n$/ がどのように使われているのかわかりませんが、もし Perl からの移植
|だとしたら、$* = 0 (//s)を指定してあるスクリプトではないかと思われます。
|これは、\Z の無い Perl 4 において \Z 相当を実現する為に取られていた手法
|であり、常に $* = 1 相当の挙動である Ruby では誤動作するはずです。

で,$*=0 相当の挙動を用意して,そっちをデフォルトにするのは
どうだろうか(そうすれば \n に . がマッチしない問題も解決でき
る)などと考えたんですが,実装の方針はたっても,それが妥当で
あるのかは一晩考えても判断できませんでした.

# 実装する夢を見てしまった ^^;;;

$*がなければ /sは不必要で /m だけあれば良いので,オプション
文字の重複の問題もありません.後は

  * それで使いやすいのか
  * 互換性は

という問題ですね.また,Perlの /m の挙動を見るとなんかちょっ
と違うような気がするんですけど."\n" =~ /\n$/  は成立するし.
# なんか根本的に考え方が違う?

                                まつもと ゆきひろ /:|)