まつもと ゆきひろです

In message "[ruby-dev:22879] Re: File.fnmatch  とDir.glob"
    on 04/02/14, H.Yamamoto <ocean / m2.ccsnet.ne.jp> writes:

|>[ ] についてもう少し考えてみます。
|
|BeOS(bash) で dir hoge[/]hoge としたところ、hoge[/]hoge にはマッチしましたが、
|hoge/hoge にはマッチしませんでした。('[' より '/' が優先されている?)
|
|それで思いついたのですが、マジック文字の優先順位を
|
|  1. { }
|  2. /
|  3. [ ], *, ?
|
|という風にするのはどうでしょうか?
|
|そうすれば、領域指定に '/' が含まれるということは、原理上なくなります。

気になるのはfnmatchって/を特別扱いしない使い方もしたいのでは
ないでしょうか。だからこそ、FNM_PATHNAMEが存在して、指定しな
ければ[/]にマッチ、指定すれば[/]はマッチしないという仕様になっ
ているのだと思うのですが。

   FNM_PATHNAME
     このフラグがセットされていると、 string 中のスラッシュ
     (/) を pattern にあるスラッシュそのものにだけマッチさせ、
     それ以外 (例えばスラッシュを含む [] シーケンスなど) に
     はマッチさせない。

となると、「領域指定に '/' が含まれるということは、原理上な
くなります」ということが嬉しくないケースもありそうな気がする
のですが。

|  E:\ruby-cvs\ruby>miniruby -ve "puts File.fnmatch('c?/hoge', 'c:/hoge')"
|  ruby 1.9.0 (2004-02-08) [i386-bccwin32]
|  true
|
|は、意図された動作でしょうか?(これは違うと思いますが・・・)

意図してると思いますけど。私の理解ではfnmatchは単なるパター
ンマッチャですから、これはドライブレターであるとかの解釈は不
要だと思います。でないとshのcaseのような使い方で困るのではな
いかと。

具体的にどう感じられたか教えていただけませんか?

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