Как сделать `-n=3` таким же, как `-n 3` в Perl 6?

В Perl 6 есть встроенная функция синтаксического анализа командной строки с помощью MAIN. Однако я столкнулся с проблемой, которая кажется тривиальной, но я не могу понять ее.

Простой MAIN:

sub MAIN(Int :n(:$num)) {
    say "You passed: " ~ $num;
}

Затем я могу вызвать свой скрипт как:

$ ./test.p6 -n=1

or:

$ ./test.p6 --num=1

Но нельзя с:

$ ./test.p6 -n 1  # or even -n1

or:

$ ./test.p6 --num 1

Я безуспешно просмотрел дизайн-документ для MAIN. Как я могу заставить это работать?


person cuonglm    schedule 26.01.2016    source источник


Ответы (1)


Некоторая информация:

Это сообщенная ошибка. Если вы узнаете больше об этом, что не упоминается в этом отчете об ошибке, например, найдете обходной путь, рассмотрите возможность добавления комментария к отчету.

Для вашего удобства вот два других существующих отчета об ошибках, которые я нашел для MAIN: не печатать требуемый тип для позиционных параметров в MAIN и не обрабатывать числа как имя опции для MAIN.

Некоторые варианты:

Используйте модуль опций. Возможно, Getopt::Tiny поможет.

Помогите исправить #124664. Perl 6 (в основном) написан на Perl 6. Я думаю, что код, который обрабатывает необработанные аргументы основной командной строки и связывает их с переменными подписи MAIN, составляет примерно 20 строк в process-cmd-args.

person raiph    schedule 27.01.2016