\@libfiles); @libfiles = split(/,/,join(','-6ren">
gpt4 book ai didi

perl - 如果多次出现相同的选项,Getopt::Long GetOptions 是否会产生错误?

转载 作者:行者123 更新时间:2023-12-01 10:06:24 28 4
gpt4 key购买 nike

我有这个 getopt:

GetOptions(  GetOptions ("library=s" => \@libfiles);
@libfiles = split(/,/,join(',',@libfiles));
"help" => \$help,
"input=s" => \$fileordir,
"pretty-xml:4" => \$pretty
);
Getopt::Long::GetOptions可以吗?检测是否在命令行上多次提供了相同的选项?例如,我希望以下内容生成错误:
perl script.pl --input=something --input=something

谢谢

最佳答案

我认为没有直接的方法,但您有两种选择:

  • 使用数组并在处理选项后检查
    #!/usr/bin/perl

    use warnings;
    use strict;

    use Getopt::Long;

    my @options;
    my $result = GetOptions ('option=i' => \@options);

    if ( @options > 1 ) {
    die 'Error: --option can be specified only once';
    }
  • 使用子程序并检查该选项是否已定义
    #!/usr/bin/perl

    use warnings;
    use strict;

    use Getopt::Long;

    my $option;
    my $result = GetOptions (
    'option=i' => sub {
    if ( defined $option) {
    die 'Error: --option can be specified only once';
    } else {
    $option = $_[1];
    }
    }
    );

    在这种情况下,您可以使用感叹号 !开头的die并且该错误将被捕获并报告为通常的 Getopt 错误(有关详细信息,请参阅 documentation of Getopt::Long)
  • 关于perl - 如果多次出现相同的选项,Getopt::Long GetOptions 是否会产生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045067/

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