代码之家  ›  专栏  ›  技术社区  ›  Jérôme

如何使用getopt处理主选项

  •  2
  • Jérôme  · 技术社区  · 16 年前

    我想处理一个在程序中看起来很自然的特性,我不知道如何用getopt perl包来处理它(不管标准时间有多长)。

    我想要一些像:

    ./perlscript <main option> [some options like -h or --output-file some_name]
    

    选项将用-或-处理,但我希望能够让用户不带破折号地给我主选项和所需选项。

    Getopt能做到这一点吗,还是我必须用手来处理?

    2 回复  |  直到 16 年前
        1
  •  8
  •   FMc TLP    16 年前

    听起来好像你在谈论非选项——基本的命令行参数。它们可以通过 @ARGV . 这个 Getopt 模块将不受干扰地向脚本传递常规参数:

    use strict;
    use warnings;
    use Getopt::Long;
    
    GetOptions (
        'foo'   => \my $foo,
        'bar=s' => \my $bar,
    );
    
    my @main_args = @ARGV;
    
    # For example: perl script.pl --foo --bar XXX 1 2 3
    # Produces:    foo=1  bar=XXX  main_args=1 2 3
    print "foo=$foo  bar=$bar  main_args=@main_args\n";
    
        2
  •  3
  •   Kilian Foth    16 年前

    如果你想把它写下来 - 而且它也不是可选的(如您所说),那么根据任何推理,它不是 选项 一个,但一个 论点 . 你应该通过

    my $mainarg = shift
    

    然后让getopt做它的事情。(你可能想检查一下 $#ARGV 然后验证是否给出了主要论点。)