Привет @ Тодд. Я вижу, что вы были огорчены изменениями других, вероятно, потому, что вы не знакомы с тем, как SO работает с изменениями , например, редактируя «спасибо» . Однако ваше собственное редактирование вашего вопроса само по себе огорчает других, поскольку оно обесценивает время / усилия тех, кто ответил вам, и тех, кто использует SO. Пожалуйста, подумайте о том, чтобы дать мне свое благословение, чтобы восстановить ваш вопрос таким, каким он был .
use v6;
use Getopt::Long;
my %opt = help => False, 'r=s' => "", 'q=s' => "", 'w=s' => "";
my %options = get-options(%opt).hash;
say %options;
say @*ARGS;
@Todd Все аргументы, которые обрабатываются в качестве опции удаляются из @*ARGSпути get-options(). Таким образом, аргументы без опций остаются в @*ARGSпоследующем. Смотрите обновленный ответ
Håkon Hægland
Он устанавливает helpзначение по умолчанию 0. Возможно , было бы лучше использовать логическое значение: help => Falseтак как опция помощи , как правило , используется , чтобы показать сообщение об ошибке. Я отредактировал ответ так, что helpэто логическое значение.
Ответы:
Вот пример использования Getopt :: Long :
Пример выполнения:
источник
@*ARGS
путиget-options()
. Таким образом, аргументы без опций остаются в@*ARGS
последующем. Смотрите обновленный ответhelp
значение по умолчанию 0. Возможно , было бы лучше использовать логическое значение:help => False
так как опция помощи , как правило , используется , чтобы показать сообщение об ошибке. Я отредактировал ответ так, чтоhelp
это логическое значение.Используйте
MAIN
подпункт :Вы можете ввести эти параметры в любом порядке:
И также поймает любой дополнительный параметр, показывая вам фактические параметры:
Если вас интересуют параметры только с одной чертой, вам понадобится GetOpt :: Long, как указано Hakon
источник