From: nobu.nakada@... Date: 2002-05-10T23:23:18+09:00 Subject: [ruby-dev:17048] Dir.glob with escaped wildcard なかだです。 Dir.globの1.7 featureとして | ワイルドカードはバックスラッシュによりエスケープすることがで | きます。(ダブルクォートの文字列中では 2 重にエスケープする必 | 要がある ことに注意してください) また、空白類に特殊な意味はな | くなりました("\0"の効果は残っています)。1.6と同様の処理を期待 | する場合は、不要な空白はString#chompなどで 適切に除去するか、 | gsub(/[ \t\n]/, "\0")で変換しておく必要が あります。 とありますが、Dir.glob('\*')が*というファイルにマッチしません。 Index: dir.c =================================================================== RCS file: /cvs/ruby/src/ruby/dir.c,v retrieving revision 1.69 diff -u -2 -p -r1.69 dir.c --- dir.c 2002/05/04 00:06:19 1.69 +++ dir.c 2002/05/10 14:04:26 @@ -638,5 +638,4 @@ remove_backslashes(p) char *p; { -#if defined DOSISH char *pend = p + strlen(p); char *t = p; @@ -649,5 +648,4 @@ remove_backslashes(p) } *t = '\0'; -#endif } @@ -669,5 +667,9 @@ glob_helper(path, sub, flags, func, arg) p = sub ? sub : path; if (!has_magic(p, 0, flags)) { +#if defined DOSISH remove_backslashes(path); +#else + if (!(flags & FNM_NOESCAPE)) remove_backslashes(p); +#endif if (stat(path, &st) == 0) { (*func)(path, arg); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦