У меня есть Perl-скрипт, который использует команду GetOpts long.A, например
automate -action build,deploy -modules chat,email,login
легко обрабатывается.
Чего я хочу добиться, так это дать пользователю возможность ставить пробелы между аргументами.
Например,
automate -action build, deploy -modules chat, email, login
Проблема в том, что GetOpt::Long
внутренне использует @ARGV
, чтобы установить переменные по мере необходимости, и пробел изменяет массив @ARGV
, который, в свою очередь, помещает только «build» как действие и только « chat 'как модуль для скрипта, игнорируя остальные переданные аргументы.
Есть ли простой способ разбора командной строки, подобной приведенной выше в perl?
Я надеюсь, что есть, потому что в противном случае мне придется использовать очень хакерский способ изменения массива @ARGV
перед его передачей в GetOpts.
Существуют ли другие надежные библиотеки, которые будут делать это для меня?
--------------------------- Сделанный на заказ скрипт ----------------- ---------------
GetOptions("action=s{1,4}"=>\@myactions,
"modules=s{,}"=>\@mymodules);
foreach(@mymodules)
{
if($_ eq $mymodules[0])
{
$mymodules= $mymodules.$_;
next;
}
if($dashboards =~ m/,$/ || $_ =~ m/^,/)
{
$mymodules= $mymodules.$_;
}
else
{
$mymodules= $mymodules.",".$_;
}
}