2017-06-12 39 views
-1

如何在while循環內搜索特定的jar文件?在下面的代碼,$application$location$version是命令行參數嘗試在while循環中搜索特定文件時出錯

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(); 
    } 
} 
+0

好的,你得到的是什麼「錯誤」?你在找哪個「特定的jar文件」?你寫的代碼有什麼問題? – Borodin

+0

Re「* $ application,$ location,$ version是命令行參數*」,那麼'while($ application eq'abc'){...}'形成一個無限循環? – ikegami

回答

0

下面的代碼應該爲你工作。目前,您不是在指定目錄內迭代文件。

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(); 
     } 

    } 
} 
+0

感謝它的工作可以請你解釋我或指向我的鏈接,我可以瞭解這個grep {(/.jar$/)&& -f「$ dir/$ _」} morly – mahesh

+0

從文件列表中給定目錄,我們正在嘗試提取有效的.jar文件。第一個條件是正則表達式'/ .jar $ /',它只限制以擴展名.jar結尾的文件名,第二個條件'-f「$ dir/$ _」'檢查它是否是有效文件。 欲瞭解更多信息: https://perlmaven.com/filtering-values-with-perl-grep, https://stackoverflow.com/questions/2483875/how-does-perls-grep-function-上班上帶有一個正則表達式 –