File::DosGlob - 类似 DOS 的通配符匹配,以及更多功能
require 5.004;
# override CORE::glob in current package
use File::DosGlob 'glob';
# override CORE::glob in ALL packages (use with extreme caution!)
use File::DosGlob 'GLOBAL_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?>"
该模块实现了类似 DOS 的通配符匹配,并进行了一些增强。它在很大程度上与 perlglob.exe(M$ setargv.obj 版本)兼容,只有一个例外——它理解目录组件中的通配符。
例如,<..\\l*b\\file/*glob.p?>
将按预期工作(因为它将找到类似 '..\lib\File/DosGlob.pm' 的东西)。请注意,所有路径组件都不区分大小写,并且反斜杠和正斜杠都被接受并保留。由于 perl 对模式进行双引号解析,因此您可能需要将反斜杠加倍,如果您要将它们直接输入。
参数中的空格分隔不同的模式,因此 glob('*.exe *.dll')
将匹配所有以 .exe
或 .dll
结尾的文件名。如果您想在通配符模式中输入文字空格,可以使用双引号或反斜杠进行转义。例如,glob('c:/"Program Files"/*/*.dll')
或 glob('c:/Program\ Files/*/*.dll')
。参数使用 Text::ParseWords::parse_line()
进行标记,因此有关使用的引号规则的详细信息,请参见 Text::ParseWords。
将其扩展到 csh 模式留给读者作为练习。
glob()
应该内置到核心,并且需要停止迎合 DOS 习惯。也需要进行优化。
Gurusamy Sarathy <[email protected]>
全局覆盖 glob() 的支持 (GSAR 3-JUN-98)
标量上下文、独立迭代器上下文修复 (GSAR 15-SEP-97)
一些目录与文件优化导致 glob 导入速度比使用 perlglob.exe 快 10 倍,使用 perlglob.bat 速度仅比 perlglob.exe 慢两倍 (GSAR 28-MAY-97)
由于 Borland 下缺少兼容的 perlglob.exe,导致一些清理 (GSAR 27-MAY-97)
初始版本 (GSAR 20-FEB-97)
perl
perlglob.bat
Text::ParseWords