【问题标题】:How to handle main option with Getopt如何使用 Getopt 处理主要选项
【发布时间】:2010-06-03 21:45:29
【问题描述】:

我想处理一个在我看来对程序来说几乎很自然的功能,但我不知道如何使用 Getopt perl 包处理它(无论 Std ot Long)。

我想要类似的东西:

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

选项将使用 - 或 -- 来处理,但我希望能够让用户给我主要和需要的选项而不用破折号。

Getopt 能做到吗,还是我必须手动处理?

【问题讨论】:

    标签: perl getopt


    【解决方案1】:

    听起来好像您在谈论非选项——基本的命令行参数。可以使用@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】:

      如果您想在没有- 的情况下编写它,并且它也不是可选的(如您指定的那样),那么无论如何它根本不是一个选项,而是一个论据。你应该简单地通过

      阅读自己
      my $mainarg = shift
      

      然后让 Getopt 做它的事情。 (您可能想在之后检查$#ARGV 以验证主要参数是否实际给出。)

      【讨论】:

      • 我说的是手工处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多