山本です。

少し疑問が出たので、質問させてください。

  http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fnmatch.3.html

で [/] のような書き方が文法エラーだと書いてあるのを発見したんですが、
ruby で { } や [ ] に '/' を含めることができるのは仕様なんでしょうか?

まだ考えがまとまってませんが、個人的には
含めることができない(例外を出す)ほうがいい気がします。

また、これに関係して、

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

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

  E:\ruby-cvs>miniruby -ve "puts Dir.glob('hoge[/]hoge')"
  ruby 1.9.0 (2004-02-08) [i386-bccwin32]
  hoge[/]hoge

で、File.fnmatch と Dir.glob でパターンの解釈が異なっていて、まずい状態です。

# File.fnmatch は "/" を領域指定と解釈。
# Dir.glob は "hoge[" と "]hoge" がパス区切りされていると解釈。