山本です。

>| うーん・・・すみません、glob(3) はどう振舞ってますか?
>| 
>|   ・fnmatch(3) + FNM_PATHNAME と同じく、'[a/c]' ==> '[ac]' で 'a' か 'c' にマッチ
>|   ・bash と同じく、'[a/c]' は '[a' の下の 'c]' にマッチ
>
>オプションなしでいいのかな。
>えーと、どっちともマッチしません。

よくわからなくなってきました。

>ところで、どうやって調べたかわかりませんが、おそらくbashでも
>[a/c] はいずれにもマッチしてないと思います。

下のようにしました。

Welcome to the BeOS shell.

$ cd /tmp
$ dir
total 0
$ dir [a/c]
/bin/ls: [a/c]: No such file or directory
$ mkdir [a
$ touch [a/c]
$ dir [a/c]
-rw-r--r--   1 baron    users           0 Mar  6 18:45 [a/c]

マッチしてるように見えます。(csh,tcsh != zsh != bash ?)

でも、わかりました。

  ・File.fnmatch の挙動は、世間に流通している fnmatch(3) と同一なので問題ない
  ・fnmatch(3) は SUSv3 に準拠してない(涙)
  ・むしろ Dir.glob の '[a/c]' の解釈が glob(3) と違う可能性がある

ということですね。glob(3) についてよくわからないので、とりあえず

  ・'*' の高速化
  ・'**/' の実装
  ・セパレータは '/' だけ

だけ変更することにして、もう一度実装しなおします。(FNM_PERIOD 復活は議論待ち)