From: "H.Yamamoto" Date: 2004-03-31T14:09:31+09:00 Subject: [ruby-dev:23291] Re: File.fnmatch とDir.glob の非互換部分 山本です。 >|>となると、FNM_PATHNAME なときの fnmatch はどうあるべきでしょうか? >|> >|> File.fnmatch('a\/b', 'a/b', File::FNM_PATHNAME) #=> true or false ? >|> >|># glob と一貫性を持たせるなら、false のような気がします > >決めてしまえばどちらでもよいように思いますが、FNM_PATHNAMEの >役割は > > FNM_PATHNAME > > こ のフラグがセットされていると、 string 中の > スラッシュ (/) を pattern にあるスラッシュその > ものにだけマッチさせ、それ以外 (例えばスラッシュ > を含む [] シーケンスなど) にはマッチさせない。 > >であり、「/」という文字そのものに特殊な意味を与えているわけ >ではなさそうなので、trueじゃないか、という気がします。 非互換をなくす当初の目標からは false かなあ、と思いますが、私は true でもいいです。'\/' なんて、 どちらでもいいような気がするし・・・どうしても気になるようなら、改めて提案します。 結論が得られたようなので、パッチをつくろうと思います。 ・閉じてない '[' は「マッチ失敗」に統一する(現在の File.fnmatch の挙動) ・不完全なエスケープは除去する(現在の remove_backslashes: Dir.glob with PLAIN の挙動) ・'[' と ']' の間にある '/' は、FNM_PATHNAME と Dir.glob で無視する(現在の File.fnmatch の挙動) ・'\/' は FNM_PATHNAME では '/' と同等、Dir.glob ではセパレータとしての機能を失う ということでいいでしょうか?あと、次のは結論が出てなかったのですが、 ・閉じてない ']' は通常文字の ']' として扱う ということでいいでしょうか?