perlglob.bat - a more capable perlglob.exe replacement
require 5.004; # override CORE::glob in current package use File::DosGlob 'glob'; @perlfiles = glob "..\\pe?l/*.p?"; print <..\\pe?l/*.p?>; # from the command line (overrides only in main::) > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>" > perlglob ../pe*/*p?
For example, C<<..\\l*b\\file/*glob.p?>> will work as expected (in that it will find something like `..\lib\File/DosGlob.pm' alright). Note that all path components are case-insensitive, and that backslashes and forward slashes are both accepted, and preserved. You may have to double the backslashes if you are putting them in literally, due to double-quotish parsing of the pattern by perl.
When invoked as a program, it will print null-separated filenames to standard output.
While one may replace perlglob.exe with this, usage by overriding CORE::glob via importation should be much more efficient, because it avoids launching a separate process, and is therefore strongly recommended. Note that it is currently possible to override builtins like glob() only on a per-package basis, not ``globally''. Thus, every namespace that wants to override glob() must explicitly request the override. See the perlsub manpage.
Extending it to csh patterns is left as an exercise to the reader.