我正在尝试管理用户执行命令时指定的众多参数。到目前为止,我一直试图限制我的脚本设计来管理参数作为标志,我可以使用Getopt :: Long轻松管理,如下所示:
GetOptions ("a" => \$a, "b" => \$b);
通过这种方式,我可以检查是否指定了a或b,然后执行相应的代码/功能。
但是,我现在有一种情况,用户可以指定两个参数变量,如下所示:
command -a black -b white
这很好,但我无法想出一个好方法来确定是先指定-a还是-b。因此,在执行$ARGV[0]
后,我不知道参数变量是否已分配给$ARGV[1]
或GetOptions ("a" => \$a, "b" => \$b);
。
如何判断哪个变量与-a
相关联,哪个与上面示例中的-b
相关联?
答案 0 :(得分:6)
Getopt支持选项的参数,因此您可以说:例如:
GetOptions( 'a=s' => \$a, 'b=s' => \$);
print "a is $a and b is $b";
使用您问题中的命令行打印:
a is black and b is white
有关更多选项,请参阅manual page。这是一个非常强大的模块。
答案 1 :(得分:2)
my $a = ''; # option variable with default value (false)
my $b = ''; # option variable with default value (false)
GetOptions ('a' => \$a, 'b' => \$b);
print "a is $a and b is $b\n
请浏览Getopt::Long的perl文档。来自这份文件。
对GetOptions()的调用解析了 命令行参数 出现在@ARGV并设置选项 如果选项,则变量为值1 确实发生在命令行上。 否则,选项变量不是 感动。将选项值设置为 true通常被称为启用 选项。
指定的选项名称 GetOptions()函数被称为 选项规范。稍后我们会看到 该规范可以包含 不只是选项名称。该 调用对变量的引用 选择目的地。
GetOptions()将返回一个真值 如果可以处理命令行 成功。否则,它会写 错误消息到STDERR,并返回一个 错误的结果。
此外this也可以为您提供帮助。