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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
garrotte
ефрейтор
Сообщения: 64
Зарегистрирован: 2008-02-27 15:56:09
Контактная информация:

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

Непрочитанное сообщение garrotte » 2010-11-07 16:15:48

Добрый день товарищи :)
Объясните пожалуйста, почему тестовый скрипт, приведенный ниже, выводит только первый параметр, из передаваемых в --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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

BSD_daemon
ефрейтор
Сообщения: 63
Зарегистрирован: 2010-10-09 21:51:17
Откуда: Из тех ворот откуда весь народ

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

Непрочитанное сообщение BSD_daemon » 2010-11-07 21:59:47

BAD:

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

opt.pl --files 111 222 333
GOOD:

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

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

Аватара пользователя
garrotte
ефрейтор
Сообщения: 64
Зарегистрирован: 2008-02-27 15:56:09
Контактная информация:

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

Непрочитанное сообщение garrotte » 2010-11-08 6:54:11

BSD_daemon спасибо за ответ
к сожаление в варианте с ковычками, параметры становятся одной строкой, со всеми вытекающими, то есть все запихиваются в

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

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

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

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

BSD_daemon
ефрейтор
Сообщения: 63
Зарегистрирован: 2010-10-09 21:51:17
Откуда: Из тех ворот откуда весь народ

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

Непрочитанное сообщение BSD_daemon » 2010-11-08 7:45:15

garrotte писал(а):BSD_daemon спасибо за ответ
к сожаление в варианте с ковычками, параметры становятся одной строкой, со всеми вытекающими, то есть все запихиваются в
Ну так распарсить их по пробелам\табам уже внутри скрипта и все.
Другого варианта нет, операционка то сливает переданные параметры программам именно в таком виде - параметры разделяются вайт символами, поэтому все что не экранировано кавычками считается отдельным параметром.
Или как вариант - писать свой парсер, что имхо не есть хорошо, хотя если это разговор именно о файлах, то лучше их передавать не через опции, а так же как в gcc и прочих подобных прогах, т.е. опциями регулировка , а файло просто обычными параметрами, в этом случае передавайте их сколько хотите за раз
I also known as: "Нефиг_чем_заняться"

Аватара пользователя
garrotte
ефрейтор
Сообщения: 64
Зарегистрирован: 2008-02-27 15:56:09
Контактная информация:

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

Непрочитанное сообщение garrotte » 2010-11-08 10:13:34

BSD_daemon ага, так и сделал, разбил по пробелу
спасибо