Perl getoptions():空字符串显示为第一个参数

时间:2014-01-22 19:11:36

标签: perl

我有一个使用script -p "first argument" "second argument" ... "nth arg"

的perl脚本
GetOptions("p=s"   => \@CHOSEN_PKGS)

由于某种原因,当我遍历数组@CHOSEN_PKGS时,第一个值是空字符串,或者是一些未初始化的变量。

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

...打印

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

知道为什么吗?

1 个答案:

答案 0 :(得分:3)

您是否在致电@CHOSEN_PKGS之前设置了GetOptions?如果是这样,那么你可以有一个空白的第一个元素:

@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