Perl中如何检查指定路径下存在pass文件且无fail文件?
Perl中判断路径存在pass文件且无fail文件的实现
首先,Perl没有专门的“文件不存在”运算符,但可以通过**逻辑非!**配合文件存在测试符-e来实现“文件不存在”的判断,即!-e $filename。不过针对你需求里的通配符匹配场景,直接用-e "$filepath/*fail"并不靠谱——双引号不会自动展开通配符,正确的做法是用glob函数获取匹配的文件列表:
完善后的代码示例
my $filepath = "path/to/file/"; # 获取所有匹配的pass文件 my @pass_files = glob("$filepath/*.pass"); # 获取所有匹配的fail文件 my @fail_files = glob("$filepath/*.fail"); # 判断:存在至少一个pass文件,且没有任何fail文件 if (@pass_files && !@fail_files) { # do something }
关键说明
glob("$filepath/*.pass")会返回路径下所有后缀为.pass的文件列表,列表非空则说明存在符合条件的pass文件。!@fail_files判断fail文件列表为空,即路径下没有任何.fail文件。- 若你想在
if条件里直接写测试(不提前存储列表),也可以用!glob("$filepath/*.fail")——只要有一个fail文件存在,glob就会返回非空值,取反后为假,同样能满足需求:
my $filepath = "path/to/file/"; if (glob("$filepath/*.pass") && !glob("$filepath/*.fail")) { # do something }
内容的提问来源于stack exchange,提问作者Blurman
相关产品推荐
相关产品推荐

