山本です。

The Single Unix Specification Version 3 を見ていて気づいたのですが、Section 9.3.5, RE Bracket Expression 
の 7. に、

  ハイフン文字は、範囲表現の最初(^があればその直後)か、最後か、範囲の終点として現れたとき
  普通の文字として扱われる

  ハイフン文字を範囲の始点として使うには、範囲表現の最初に持ってくるか、collating symbol(?)
  を使わなければいけない

とありました。これと、

  E:\ruby-cvs\ruby>miniruby -ve "puts '-' =~ /[a--]/"
  ruby 1.9.0 (2004-02-19) [i386-bccwin32]
  -e:1: warning: character class has `-' without escape
  -e:1: invalid regular expression: /[a--]/

が一致してない気がします。(File.fnmatchも直さないと・・・)