2010-06-03 18 views
2

我想处理一个功能,这在我看来似乎很自然,而且我不知道如何使用Getopt perl软件包(无论Std ot Long)如何处理它。如何使用Getopt处理主要选项

我想是这样的:

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

选项将与处理 - 或 - ,但我希望能够让用户给我没有破折号的主要和必要的选择。

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

回答

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 [email protected]_args\n"; 
3

如果你想拥有它没有-写的,这也是不可选的(如你specifiy),然后通过任何推理是不选项,但是参数。你应该只需通过

my $mainarg = shift 

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

+0

那是我亲手处理它的意思。 – 2010-06-03 13:45:05