[#39325] File.fnmatch の改良について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

はじめまして、山本です。

18 messages 2004/03/05

[#39429] trial version of Ruby/Tk — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

18 messages 2004/03/23
[#39454] Re: trial version of Ruby/Tk — "Shirai,Kaoru" <shirai@...> 2004/03/31

白井です。

[#39460] Re: trial version of Ruby/Tk — Hidetoshi NAGAI <nagai@...> 2004/04/01

永井@知能.九工大です.

[#39465] Re: trial version of Ruby/Tk — "Shirai,Kaoru" <shirai@...> 2004/04/01

白井です。

[#39466] Re: trial version of Ruby/Tk — Hidetoshi NAGAI <nagai@...> 2004/04/01

永井@知能.九工大です.

[#39453] Re: int/int in Ruby2? — Masaaki Sakano <mas@...>

坂野 正明です。

36 messages 2004/03/31
[#39455] Re: int/int in Ruby2? — NISHIMATSU Takeshi <t-nissie@...> 2004/03/31

西松と申します.

[#39470] Re: int/int in Ruby2? — Masaaki Sakano <mas@...> 2004/04/01

坂野 正明です。

[#39473] Re: int/int in Ruby2? — matz@... (Yukihiro Matsumoto) 2004/04/01

まつもと ゆきひろです

[#39484] Re: int/int in Ruby2? — Masaaki Sakano <mas@...> 2004/04/03

坂野 正明です。

[#39528] Re: int/int in Ruby2? — "T Akutsu" <locrian@...> 2004/04/09

あくつです。なんかわくわくしてきだぞ。(^^;)

[ruby-list:39337] Re: File.fnmatch の改良について

From: "U.Nakamura" <usa@...>
Date: 2004-03-06 07:07:43 UTC
List: ruby-list #39337
こんにちは、なかむら(う)です。

In message "[ruby-list:39336] Re: File.fnmatch    の改良について"
    on Mar.06,2004 14:52:58, <ocean@m2.ccsnet.ne.jp> wrote:
| 納得しました。情報ありがとうございました。
| BeOSのbashで確認したところ、[\*] はやはりエスケープとして
| 働いてました。[a-b-c] も、なかむらさんの仰るように [a-bc-] として働いてました。
| (fnmatch(3) もそう働いているということでいいでしょうか?)

この件に関してはそうです。


| 第一に、FNM_PATHNAME のときの [a/c] の解釈です。
| 
| bash では [a/c] は '[a' + '/' + 'c]' として解釈していて、
| 
| E:\ruby-cvs>miniruby_1_8 -e "puts File.fnmatch('[a/c]', '[a/c]', File::FNM_PATHNAME)"
| false
| 
| E:\ruby-cvs>miniruby_1_8 -e "puts File.fnmatch('[a/c]', 'a', File::FNM_PATHNAME)"
| true
| 
| という File.fnmatch の動作と異なっています。fnmatch(3) はどう振舞ってますか?

NetBSDのfnmatch(3)はRubyと同じです。


| 第二に、DOSISH は不完全な気がするので、少なくともパターンでは '/' のみとしたいのですが、
| こちらはどうでしょうか?
| 
| E:\ruby-cvs>miniruby_1_8 -e "puts File.fnmatch('a\b', 'a\b', File::FNM_PATHNAME)"
| true
| 
| E:\ruby-cvs>miniruby_1_8 -e "puts File.fnmatch('a\[b]', 'a\b', File::FNM_PATHNAME)"
| false
| 
| E:\ruby-cvs>miniruby_1_8 -e "puts File.fnmatch('a\\\[b]', 'a\b', File::FNM_PATHNAME)"
| true

パターン側もマッチ対象文字列側も / だけでいいと思ってます。
パターン側はどうしようもないですし、そういう制限があるなら無
理にマッチ対象文字列側の \ と同一視するのもめんどくさ...じゃ
なくて、紛らわしいですし。

でもこれは私がRubyスクリプト内で \ をパス区切りとしては使用し
てないからそう思うだけで、普通に \ を使用しているユーザー(と
いうのがもし存在するなら)だったら別の意見かもしれないですね。


| 第三に、FNM_PERIOD を復活させたほうがいいのでしょうか?それとも今のまま FNM_DOTMATCH でしょうか?

先の私の主張から考えると、一貫性という面からはFNM_PERIODを復
活させるべき、なんでしょうねえ。

File.glob_match? ができれば、そっちは FNM_PERIOD|FNM_PATHNAME
相当なんだから、File.fnmatchはfnmatch(3)との互換性を高めても
かまわない、のかなあ...

というわけでこれについては結論なしです ^^;


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>



In This Thread