2

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

我想要类似的东西:

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

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

Getopt 能够做到这一点,还是我必须手动处理?

4

2 回答 2

8

听起来好像您在谈论非选项——基本的命令行参数。它们可以通过@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";
于 2010-06-03T13:39:36.233 回答
3

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

my $mainarg = shift

然后让 Getopt 做它的事。(您可能需要$#ARGV事后检查以验证主要论点是否实际给出。)

于 2010-06-03T13:40:17.573 回答