2014-01-22 6 views
-1

을 표시 나는 배열 @CHOSEN_PKGS을 통해 I 루프, 첫 번째 값이 빈 문자열 인 경우 몇 가지 이유로 사용 script -p "first argument" "second argument" ... "nth arg"펄 getoptions : 빈 문자열로 첫 번째 인수

GetOptions("p=s" => \@CHOSEN_PKGS) 

와 펄 스크립트, 또는 일부 초기화되지 않은 변수.

if(@CHOSEN_PKGS) { 
     foreach my $PKG(@CHOSEN_PKGS) { 
      print "Pkg: $PKG"; 
}} 

인쇄 ... 왜

Pkg: 
Pkg: <first argument> 
Pkg: <second argument> 

어떤 생각?

+0

기본값이 아닌 옵션을 설정하고 있는지 확인하려면'Getopt :: Long;'줄을 보여주십시오. – toolic

답변

3

GetOptions으로 전화하기 전에 @CHOSEN_PKGS을 설정 하시겠습니까? 그렇다면 빈 첫 번째 요소가있을 수 있습니다.

@CHOSEN_PKGS = ' '; 

결과를 재현 할 수 없습니다. 이 코드를 사용하는 경우 :

여기
use warnings; 
use Getopt::Long; 

GetOptions("p=s" => \@CHOSEN_PKGS); 
if (@CHOSEN_PKGS) { 
    foreach my $PKG (@CHOSEN_PKGS) { 
     print "Pkg: $PKG"; 
     print "\n"; 
    } 
} 

내가 무엇을 얻을 수 있습니다 :

script -p "first argument" "second argument" "nth arg" 
Pkg: first argument 

내가 -p 3 번을 사용하는 경우, 내가 얻을 :

script -p "first argument" -p "second argument" -p "nth arg" 
Pkg: first argument 
Pkg: second argument 
Pkg: nth arg 

항목 : Getopt::Long

관련 문제