Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 尝试使用while循环搜索特定文件时出错_Perl - Fatal编程技术网

Perl 尝试使用while循环搜索特定文件时出错

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

如何在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 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'){…}不会形成一个无限循环吗?