我想处理一个在我看来几乎很自然的程序,我不知道如何用Getopt perl包处理它(无论Std ot Long)。
我想要像:
./perlscript <main option> [some options like -h or --output-file some_name]
将使用 - 或 - 处理选项,但我希望能够让用户在没有破折号的情况下向我提供主要和必需的选项。
Getopt能够做到这一点,还是我必须手工处理?
答案 0 :(得分: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";
答案 1 :(得分:3)
如果你想在没有-
的情况下编写它,并且它也不是可选的(如你所指定的那样),那么通过任何理由它根本不是选项,但是一个参数。你应该通过
my $mainarg = shift
然后让Getopt做它的事情。 (您可能希望事后检查$#ARGV
以验证主要参数是否已实际给出。)