作者: T.Watanabe
日時: 2004/9/15(22:34)
  ねこ丸です。

  ひょんなことから妙なことに気づきました。
  Ruby って正規表現マッチをどっち向きにも書けるんですね。

  例えば

val = ARGV.shift
if ( /pattern/ =~ val )
  print "match !\n"
end

  でも

val = ARGV.shift
if ( val =~ /pattern/ )
  print "match !\n"
end

  と書いても、

% ruby SCRIPTNAME pattern

  とプロンプトから入力すれば

match !

  と表示されます。(Perl ではどちらも Syntax OK ですが後者の書き方でない
と match ! とは表示されません。)

  なのにリファレンスなどでは Regexp =~ string な形の記述が当然のように書
かれています。これはなぜでしょうか?  まぁ「オブジェクト.メソッド」とい
う書き方からするとこの順番で書いた方が統一が取れていますが、じゃあなぜ逆
に置いても動いちゃうのよ、というのも気になります。
  ちなみに、手元のスクリプトを見たらどっちの向きも使ってました(^^;  リ
ファレンスなどを参照しながら書いているときはその作法に、Perl のクセが無
意識に出るときは Perl 流に書いてしまっているようです。

  恐らくは私のような無節操な人間に対する配慮だろうと思っているのですが、
それならそれでリファレンスマニュアルなどに一言加えておいてもらえるとよい
のではないかと思うのですが、どんなもんでしょうか?

--
    ねこ丸