Perl 文件通配的奇怪现象

标签 perl glob built-in

我正在编写一个脚本,它将循环遍历一系列数字,构建一个 glob 模式,并根据 glob 测试目录中是否存在文件。

这些图像是纳斯卡赛车号码图像,并遵循以下模式:

1_EARNHARDTGANASSI_256.TGA
2_PENSKERACING_256.TGA

这是我正在使用的脚本的片段:

foreach $currCarNum (0..101) {  
    if (glob("//headshot01/CARS/${currCarNum}_*_256.TGA")) {    
        print("Car image $currCarNum exists\n");
    } else {
        print("Car image $currCarNum doesn't exist\n");
    }   
}

我遇到的问题是目录中存在的图像应该与文件全局模​​式不匹配。

例如,具有以下名称的文件将返回为不存在:

2_PENSKERACING_256.TGA

然而,以下内容将按现有情况返回:

1_EARNHARDTGANASSI_256.TGA

如果我在 DOS 或 Cygwin 中使用相同的文件 glob 模式,两个文件都会正确列出。

文件全局模​​式在 Perl 中的解释是否不同?我有什么遗漏的吗?

最佳答案

您需要以列表格式而不是标量格式返回结果。在你的 if 语句中尝试这个,当我测试它时它对我有用。

if (my @arr = glob("//headshot01/CARS/${currCarNum}_*_256.TGA")) {

关于Perl 文件通配的奇怪现象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093393/

相关文章:

perl - 使用 perl 将 RTF 转换为 TEXT

debian - Debian 9 上的 Perl 声音合成

regex - 无法正确解析文件;全局不工作

没有 __init__ 的 Python 包

python - 这个网页登录Python脚本正确吗?

perl - "Use of unitialized value $. in range (or flip)"试图用 Perl 告诉我什么

perl - 如何在 Perl 中获取全局变量值?

linux - 如果存在多个目录,则移动目录 - 测试 globbing 模式是否匹配任何内容

python - 如何将 .write() 用于外语字符(ã、à、ê、ó、...)

bash - 为什么 read 在 bash 和 dash 中的行为不同?