新井です。

ruby-dev にいきます。

In message "[rubyist:1286] Re: ARGV の機能"
  on 24 Mar 2002 13:39:38 +0900,
  Nobuyoshi Nakada <nobu.nokada / softhome.net> wrote:
> なかだです。

> > fnmatch は、"**/" も使えませんね。連続する ** は、* と同じで
> > した。以下に訂正
> 
> FNM_PATHNAMEを指定したときは**/も見た方がいいような気がしますね。

FNM_DOTMATCH が出て来て fnmatch は中途半端な印象があります。

FNM_PATHNAME 指定をデフォルトにした方が混乱がなくて使いやすそうです。

* fnmatch という名のデフォルトがパス名を考慮しないのは変

  (ライブラリ関数の挙動はここでは無視。実際、既に 
  FNM_DOTMATCH は無視している)

* 利用者は、シェルのパターンマッチの挙動をまず意図しそう。

    p File.fnmatch("a*/c", "a/b/c")
    => true

    あれ?っとなりそう。

* よく使うと思われるシェルのパターンマッチをさせたいとき、長ったらしい。

    p File.fnmatch("a*/c", "a/b/c", File::FNM_PATHNAME)

* その上で、**/ もサポートしてくれた方が良さそう。

* 名前は、FNM_NOPATHNAME か?

そうすると、後、Dir.glob と、File.fnmatch の挙動の違いで残さ
れるのは、{..} だけになるかな。

fnmatch() がライブラリ関数と同じ(FNM_PERIOD 復活)であれば、
この気持ちは多少は治まります。でも、使いやすさで言えばやっぱ
りライブラリは無視した方が良いように思えます。いかがでしょう
か?

> あと、File.fnmatchやDir.globはSJIS対応してないですね。どうした
> ものかな、めんどくさそう。

あらま。

--
新井康司 (Koji Arai)