Perl6: как мне прочитать смешанные параметры из командной строки?


9

Я удаляю пост, так как со мной не консультировались по поводу цензуры / редактирования.


Смотрите, например, Getopt :: Long
Håkon Hægland

Привет @ Тодд. Я вижу, что вы были огорчены изменениями других, вероятно, потому, что вы не знакомы с тем, как SO работает с изменениями , например, редактируя «спасибо» . Однако ваше собственное редактирование вашего вопроса само по себе огорчает других, поскольку оно обесценивает время / усилия тех, кто ответил вам, и тех, кто использует SO. Пожалуйста, подумайте о том, чтобы дать мне свое благословение, чтобы восстановить ваш вопрос таким, каким он был .
raiph

Ответы:


9

Вот пример использования Getopt :: Long :

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;

Пример выполнения:

$ p.p6  -w xyz -q def -r abc hello
{help => False, q => def, r => abc, w => xyz}
[hello]

@Todd Все аргументы, которые обрабатываются в качестве опции удаляются из @*ARGSпути get-options(). Таким образом, аргументы без опций остаются в @*ARGSпоследующем. Смотрите обновленный ответ
Håkon Hægland

Он устанавливает helpзначение по умолчанию 0. Возможно , было бы лучше использовать логическое значение: help => Falseтак как опция помощи , как правило , используется , чтобы показать сообщение об ошибке. Я отредактировал ответ так, что helpэто логическое значение.
Хокон Хагланд

8

Используйте MAINподпункт :

#!/usr/bin/env raku

use v6;

sub MAIN(:$these ="These", :$are="Are", :$params="Params") {
    say "$these $are $params";
}

Вы можете ввести эти параметры в любом порядке:

./command-line.p6 --are=well --these=those
those well Params

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

./command-line.p6 --are=well --these=those --not=this_one
Usage:
  ./command-line.p6 [--these=<Any>] [--are=<Any>] [--params=<Any>]

Если вас интересуют параметры только с одной чертой, вам понадобится GetOpt :: Long, как указано Hakon

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.