新井です。 > こんばんは。久野です。 > <http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Dir>では, > '**'は「ディレクトリを再帰的にたどって*のマッチを行います」 > とあります。これを見て,'**'を指定すれば再帰的にすべてのファ > イルがたどれると思いこんでしまいました。少し説明が分かりにく > いように思うのですが,どうでしょうか。(と責任転嫁してみる。) あー、すみません。私が zsh 使ったことなく、マニュアルも見ず、 ソースも見ずに思い込みで書いたせいですね。はい、勘違いしてお りました。 で、ちょっと zsh インストールして man を見たところ "**/" はパターン "*/" の0回以上の繰り返し のようですね。だから $ mkdir -p foo/foo/foo $ ruby -e 'Dir.glob("**/foo").each {|v| p v}' は、 "./foo" "foo/foo" "foo/foo/foo" となるようで。。って、あれ?最初の "." はなに?これだと"**"が"." にマッチしたように見えます。見えても良いような気もしますが、 ちょっと、いや結構気持悪いです。はい。 --- dir.c.org Mon Feb 19 22:53:33 2001 +++ dir.c Wed Feb 28 05:01:40 2001 @@ -631,7 +631,7 @@ if (m && strcmp(magic, "**") == 0) { recursive = 1; buf = ALLOC_N(char, strlen(base)+strlen(m)+3); - sprintf(buf, "%s%s%s", base, (*base)?"":".", m); + sprintf(buf, "%s%s", base, *base ? m : m+1); rb_glob_helper(buf, flag, func, arg); free(buf); } -- 新井康司 (Koji Arai)