Shell perl Getopt::Long::GetOptions用法

Shell perl Getopt::Long::GetOptions用法,shell,perl,command-line-tool,Shell,Perl,Command Line Tool,我想使用Getopt::Long::GetOptions为脚本获取命令行选项 我有这样的要求: perl script.pl -c <name1> -c <name2> -m <name3> argument perlscript.pl-c-c-m参数 这里我们有可选的选项标志-c和-mm,而参数是必需的 有人能指出GetOptions的正确用法吗 当未提供选项时,GetOptions不会返回错误结果 这就是为什么它们被称为“选项” 换句话说,如果您需要一

我想使用
Getopt::Long::GetOptions
为脚本获取命令行选项

我有这样的要求:

perl script.pl -c <name1> -c <name2> -m <name3> argument
perlscript.pl-c-c-m参数
这里我们有可选的选项标志
-c
-m
m,而
参数
是必需的

有人能指出
GetOptions
的正确用法吗

当未提供选项时,
GetOptions
不会返回错误结果 这就是为什么它们被称为“选项”

换句话说,如果您需要一个强制参数,则需要在
GetOptions
调用之外显式检查它


如果参数是
@ARGV
的一部分,而不是选项,请使用
--
发出选项结束的信号。在下面的示例中,脚本将通过
$ARGV[0]
访问
参数

perl script.pl -c <name1> -c <name2> -m <name3> -- argument
perlscript.pl-c-c-m——参数

以下是示例代码和结果

如果您想了解有关如何处理多值选项的更多信息,请参阅documantation:


还有一件事,Getopt::Long::GetOptions没有提供处理强制选项的方法。您应该检查手上的@ARGV和raiseexceptions等中是否有强制选项。

或者,您可以设置
pass_through
,让所有未知参数转到
@ARGV
<代码>使用Getopt::Long qw(:config pass_through)但要小心,因为这会影响选项值的“类型检查”。谢谢Kyanny,您的答案很有帮助。我还有一个问题,我想用“+”作为选项?我可以做GetOptions('+=f'=>sub{$plus=“true”})吗