"", "no_inli-6ren">
gpt4 book ai didi

Perl:使用 GetOptions 过滤无效参数

转载 作者:行者123 更新时间:2023-12-05 00:35:38 26 4
gpt4 key购买 nike

我正在用 Perl 编写一个小脚本,但我在命令行中遇到了参数问题。我正在使用 GetOps 来解析它们,如下面的代码所示:

%params = (
"help" => "",
"no_inline" => "",
"no_dupl" => ""
);

&paramError if (!GetOptions(
"help" => \$params{"help"},
"no-inline" => \$params{"no_inline"},
"no-duplicates" => \$params{"no_dupl"},
));

然后我像这样运行脚本:
> script.pl --no-inline # ok, valid parameter
> script.pl --no-inline blahblah # blahblah is not valid
> script.pl --no-i # not valid

问题是在第二个和第三个示例中 GetOps 表示参数有效。我应该怎么做才能使这些参数无效?

最佳答案

你的第三个例子是有效的。 GetOptions接受缩写名称,只要它们没有歧义。
例如,如果您有一个名为 no-indent 的选项,你的第三个例子会被拒绝,因为它不明确,但是 --no-inl还是会被接受的。

要禁用此功能,请使用:

use Getopt::Long qw(:config no_auto_abbrev);

Configuring Getopt::Long对于其他选项。

你的第二个例子是完全正常的。 blahblah将留在 @ARGVGetOptions称呼。如果您的脚本只接受您指定的选项,而不能接受其他参数(如文件名或其他),只需检查 @ARGV调用后为空。

关于Perl:使用 GetOptions 过滤无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com