山本です。

>[ ] についてもう少し考えてみます。

BeOS(bash) で dir hoge[/]hoge としたところ、hoge[/]hoge にはマッチしましたが、
hoge/hoge にはマッチしませんでした。('[' より '/' が優先されている?)

それで思いついたのですが、マジック文字の優先順位を

  1. { }
  2. /
  3. [ ], *, ?

という風にするのはどうでしょうか?

そうすれば、領域指定に '/' が含まれるということは、原理上なくなります。

もちろん、**/ を fnmatch に実装するのが前提となると思いますが・・・

  a. / は [ ] に優先される
  b. **/ を実装、FNM_PATHNAME は廃止

///////////////////////////////////////////////////////////////////////////////

確認なのですが、

  E:\ruby-cvs\ruby>miniruby -ve "puts File.fnmatch('c?/hoge', 'c:/hoge')"
  ruby 1.9.0 (2004-02-08) [i386-bccwin32]
  true

は、意図された動作でしょうか?(これは違うと思いますが・・・)