Страница 1 из 1

разбор параметров Getopt::Long

Добавлено: 2010-11-07 16:15:48
garrotte
Добрый день товарищи :)
Объясните пожалуйста, почему тестовый скрипт, приведенный ниже, выводит только первый параметр, из передаваемых в --files

Код: Выделить всё

use Getopt::Long;
my @files;

GetOptions('files=s' => \@files);

foreach (@files){
    print "$_\n";
}
perldoc на эту тему перечитал неоднократно, и если я правильно понял. он должен при запуске:

opt.pl --files 111 222 333

поместить в массив все аргументы, но у меня туда попадает только первый, то есть 111
При запуске:

opt.pl --files 111 --files 222 --files 333

в массив попадают все аргументы, но как я понимаю, это не правильно
или я что-то не правильно понимаю ?
Заранее благодарен

Re: разбор параметров Getopt::Long

Добавлено: 2010-11-07 21:59:47
BSD_daemon
BAD:

Код: Выделить всё

opt.pl --files 111 222 333
GOOD:

Код: Выделить всё

opt.pl --files '111 222 333'
и так будет для всех програм, дазент мэттер толи это шелл скрипт, толи это перловка толи это сишная прога, perldoc здесь вообще ни при чем

Re: разбор параметров Getopt::Long

Добавлено: 2010-11-08 6:54:11
garrotte
BSD_daemon спасибо за ответ
к сожаление в варианте с ковычками, параметры становятся одной строкой, со всеми вытекающими, то есть все запихиваются в

Код: Выделить всё

 $arr[0]
что тоже не совсем устраивает :)
в общем решил обойтись

Код: Выделить всё

opt.pl --files 111 --files 222 --files 333
еще раз спвсибо :)

Re: разбор параметров Getopt::Long

Добавлено: 2010-11-08 7:45:15
BSD_daemon
garrotte писал(а):BSD_daemon спасибо за ответ
к сожаление в варианте с ковычками, параметры становятся одной строкой, со всеми вытекающими, то есть все запихиваются в
Ну так распарсить их по пробелам\табам уже внутри скрипта и все.
Другого варианта нет, операционка то сливает переданные параметры программам именно в таком виде - параметры разделяются вайт символами, поэтому все что не экранировано кавычками считается отдельным параметром.
Или как вариант - писать свой парсер, что имхо не есть хорошо, хотя если это разговор именно о файлах, то лучше их передавать не через опции, а так же как в gcc и прочих подобных прогах, т.е. опциями регулировка , а файло просто обычными параметрами, в этом случае передавайте их сколько хотите за раз

Re: разбор параметров Getopt::Long

Добавлено: 2010-11-08 10:13:34
garrotte
BSD_daemon ага, так и сделал, разбил по пробелу
спасибо