如何管理用Perl编写的脚本的命令行参数/变量?

Str*_*ure 3 perl command-line-arguments

我正在尝试管理用户执行命令时指定的众多参数.到目前为止,我一直试图限制我的脚本设计来管理参数作为标志,我可以使用Getopt :: Long轻松管理,如下所示:

GetOptions ("a" => \$a, "b" => \$b);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以检查是否指定了a或b,然后执行相应的代码/功能.

但是,我现在有一种情况,用户可以指定两个参数变量,如下所示:

command -a black -b white
Run Code Online (Sandbox Code Playgroud)

这很好,但是我无法想出一个好方法来确定是先指定-a还是-b.因此,我不知道参数变量是在我执行时分配$ARGV[0]还是$ARGV[1]在分配之后GetOptions ("a" => \$a, "b" => \$b);.

在上面的示例中,如何判断哪个变量与哪个变量相关-a-b

小智 6

Getopt支持选项的参数,所以你可以说例如:

GetOptions( 'a=s' => \$a, 'b=s' => \$);
print "a is $a and b is $b";
Run Code Online (Sandbox Code Playgroud)

使用您的问题中的命令行打印:

a is black and b is white
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参见手册页.这是一个非常强大的模块.