Perl 尝试使用while循环搜索特定文件时出错
如何在while循环中搜索特定的jar文件?在下面的代码中,Perl 尝试使用while循环搜索特定文件时出错,perl,Perl,如何在while循环中搜索特定的jar文件?在下面的代码中,$application,$location,$version是命令行参数 sub do_verify { while($application eq 'abc') { my $dir = "/viewstore/ccabc/dst_${application}_${version}/abcportal/${location}/target"; opendir(DIR, $dir) or
$application
,$location
,$version
是命令行参数
sub do_verify
{
while($application eq 'abc')
{
my $dir = "/viewstore/ccabc/dst_${application}_${version}/abcportal/${location}/target";
opendir(DIR, $dir) or die $!;
my $jarfile;
next unless ($jarfile =~ /\.jar$/);
print "$jarfile\n";
do_upload();
}
}
下面的代码应该适合您。当前,您没有迭代指定目录中的文件
sub do_verify {
while($application eq 'abc') {
my $dir = "/viewstore/ccabc/dst_${application}_${version}/abcportal/${location}/target";
opendir(DIR, $dir) or die $!;
my @jarfiles = grep { (/\.jar$/) && -f "$dir/$_" } readdir(DIR);
foreach (@jarfiles) {
my $jarfile = $_;
print "$jarfile\n";
do_upload();
}
}
}
谢谢你能给我解释一下或者给我指一个链接,在那里我可以理解这个grep{(/.jar$/)&&-f“$dir/$\”}。从给定目录中的文件列表中,我们正在尝试提取有效的.jar文件。第一个条件是regex
/.jar$/
,它只限制以扩展名.jar结尾的文件名,第二个条件是-f“$dir/$\”
检查文件是否有效。更多信息:,好的,那么您得到的“错误”是什么?你在寻找哪个“特定jar文件”?您编写的代码有什么问题?如果“$application、$location、$version是命令行参数”,那么($application eq'abc'){…}不会形成一个无限循环吗?