いいじまです。

> >         C:\> perl -MWild -e "print qq'@ARGV'" "C:\Program Files\*"
> > とすると、
> >         (1) の環境では C:\Program Files\*
> >         (2) の環境では C:./\Program Files\*
> > という出力が出ます。

>   File::DosGlob のドキュメントに

>     If you want
>     to put in literal spaces in the glob pattern, you can escape them with
>     either double quotes, or backslashes. e.g. "glob('c:/"Program
>     Files"/*/*.dll')", or "glob('c:/Program\ Files/*/*.dll')". The argument
>     is tokenized using "Text::ParseWords::parse_line()", so see
>     Text::ParseWords for details of the quoting rules used.
> 
> とあり、

>     C:\>perl -MWild -e "print qq'@ARGV'" "C:\\Program\ Files\\*"
> 
> としたところ、ファイル名が多数出力されました。
> (Windows 2000 & ActivePerl build 811)

あちゃあ。Wild.pm にもう一仕事必要なわけですね。
問題は Shift_JIS の第二バイトの \ ですが、これも 表\ のように書く必要が
あるようです。素の Perl なら簡単だけど、5.6 以降の Unicode サポートとか、
今更だけど jperl とか、どうしよう…


>   ちなみに PERL_SRC/win32/Makefile の
>     #USE_SETARGV        = define
> を有効にし、VC6 でコンパイルした perl では
>     C:\> perl -e "print qq'@ARGV'" "C:\Program Files\*"
>     C:\Program Files\*

これは順当ですね。そのために " があるわけですから。

>     C:\> perl -e "print qq'@ARGV'" "C:\\Program\ Files\\*"
>     C:\\Program\ Files\\*

手元に VC がないので追試できないのですが…
        C:\> perl -e "print qq'@ARGV'" "C:\\Program\ Files\\"*
ではどうですか? UNIX ではよく使われる書き方です。

========================================================================
飯嶋 浩光 / でるもんた・いいじま   http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta           mailto:delmonta@ht.sakura.ne.jp