我正在编写一个脚本,它将遍历一系列数字,构建一个glob模式,并测试一个文件是否存在于基于glob的目录中。
图像是Nascar车号图像,并按照以下模式:
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");
}
}
我遇到的问题是,目录中存在的图像应该与文件glob模式匹配。
例如,具有以下名称的文件将返回为不存在:
2_PENSKERACING_256.TGA
然而,以下内容将返回现有:
1_EARNHARDTGANASSI_256.TGA
如果我在DOS或Cygwin中使用相同的文件glob模式,则两个文件都会正确列出。
Perl中的文件glob模式是否有不同的解释?有什么我想念的吗?
答案 0 :(得分:2)
您需要以列表格式而不是标量格式返回结果。试试这个if语句,当我测试它时,它对我有用。
if (my @arr = glob("//headshot01/CARS/${currCarNum}_*_256.TGA")) {
答案 1 :(得分:1)
(文件)glob评估其(嵌入式) 只有当它开始时的论证 新名单。必须读取所有值 在它重新开始之前。在列表中 上下文,这并不重要,因为 无论如何你自动得到它们。 但是,在标量上下文中 operator返回每个的下一个值 时间被称为,或者 undef时 列表已用完。