我正在尝试管理用户在执行命令时指定的众多参数。到目前为止,我一直试图将脚本设计限制为将参数作为标志来管理,我可以使用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
关联?
Getopt支持选项的参数,因此您可以说:
GetOptions( 'a=s' => \$a, 'b=s' => \$b);
print "a is $a and b is $b";
带有问题的命令行打印:
a is black and b is white
请参阅manual page,以了解更多吨位选择。这是一个非常强大的模块。
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也可以为您提供帮助。