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

问题描述 投票:3回答:2

我正在尝试管理用户在执行命令时指定的众多参数。到目前为止,我一直试图将脚本设计限制为将参数作为标志来管理,我可以使用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关联?

perl command-line-arguments
2个回答
6
投票

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,以了解更多吨位选择。这是一个非常强大的模块。


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也可以为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.