perl中的GetOptions()不验证完整参数名

perl中的GetOptions()不验证完整参数名,perl,command-line-arguments,getopt-long,Perl,Command Line Arguments,Getopt Long,假设我想输入两个命令行参数-源和目标。 GetOptions允许命令行只检查参数名称的第一个字符而不是完整字符串。 如何验证完整参数字符串,而不是只允许传递其子字符串 下面是一个示例程序: my ($source,$dest); GetOptions( 'from=s' => \$source, 'to=s' => \$dest ) or die "Incorrect arguments\n"; 它接受以下任何一项: -来自 -fro -fr -f -to -t 然而,我希望它

假设我想输入两个命令行参数-源和目标。 GetOptions允许命令行只检查参数名称的第一个字符而不是完整字符串。 如何验证完整参数字符串,而不是只允许传递其子字符串

下面是一个示例程序:

my ($source,$dest);
GetOptions(
'from=s' => \$source,
'to=s' => \$dest
) or die "Incorrect arguments\n";
它接受以下任何一项:

  • -来自
  • -fro
  • -fr
  • -f

  • -to

  • -t
然而,我希望它只接受

  • -来自
  • -to
如果除了那些完整的单词外,其他任何东西都通过了,那么就失败了

如何禁止缩写选项?

请参阅以下部分中的“配置
Getopt::Long
”:

auto_abbrev
允许选项名称缩写为唯一性。违约 启用,除非环境变量
POSIXLY_CORRECT
已 已设置,在这种情况下,“
auto_abbrev
”被禁用


默认情况下,缩略语处于启用状态。禁用
auto_abbrev
。参考:

例如,当传递
-fro
时,它将随着以下消息消失:

Unknown option: fro
Incorrect arguements

我建议
使用Getopt::longqw(:config posix_default)取而代之;它提供了更健全的默认设置,包括
no\u auto\u abbrev
。具体来说,它相当于
使用Getopt::Long qw(:config no_auto_abbrev no_Getopt_compat require_order)
,因此不允许使用
-fro
+from
以及混合选项和参数。
Unknown option: fro
Incorrect arguements