Как обрабатывать основной вариант с Getopt - PullRequest
2 голосов
/ 03 июня 2010

Я хочу обработать функцию, которая кажется мне почти естественной в программах, и я не знаю, как справиться с ней с помощью пакета perto Getopt (независимо от стандартного типа).

Я бы хотел что-то вроде:

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

Параметры будут обрабатываться с помощью - или -, но я хочу, чтобы пользователь мог указать мне основной и необходимый параметр без черточек.

Может ли Гетопт сделать это, или я должен справиться с этим вручную?

Ответы [ 2 ]

8 голосов
/ 03 июня 2010

Звучит так, как будто вы говорите о не опциях - основных аргументах командной строки. К ним можно получить доступ с помощью @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";
3 голосов
/ 03 июня 2010

Если вы хотите, чтобы оно было написано без -, и это также не является обязательным (как вы указываете), то по каким-либо причинам это вовсе не опция , а аргумент . Вы должны просто прочитать себя через

my $mainarg = shift

и пусть Гетопт сделает свое дело. (Возможно, вы захотите проверить $#ARGV впоследствии, чтобы убедиться, что основной аргумент был задан.)

...