Olá, @Todd. Percebo que você ficou chateado com as edições de outras pessoas, provavelmente porque você não está familiarizado com o modo como o SO funciona em relação às edições , por exemplo, editando 'obrigado' . No entanto, sua própria edição da sua pergunta é perturbadora para os outros, pois desvaloriza o tempo / esforço daqueles que responderam a você e outros que usam o SO. Por favor, considere me dar sua bênção para restabelecer sua pergunta como ela era .
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 Todos os argumentos que são processados como opções são removidos de @*ARGSpor get-options(). Portanto, argumentos não opcionais são deixados @*ARGSdepois. Veja a resposta atualizada
Håkon Hægland
Ele define helpo valor padrão de 0. Provavelmente, seria melhor usar um booleano: help => Falseuma vez que a opção de ajuda normalmente é usada para mostrar uma mensagem de ajuda. Eu editei a resposta de modo que helpseja um booleano.
Respostas:
Aqui está um exemplo usando Getopt :: Long :
Exemplo de execução:
fonte
@*ARGS
porget-options()
. Portanto, argumentos não opcionais são deixados@*ARGS
depois. Veja a resposta atualizadahelp
o valor padrão de 0. Provavelmente, seria melhor usar um booleano:help => False
uma vez que a opção de ajuda normalmente é usada para mostrar uma mensagem de ajuda. Eu editei a resposta de modo quehelp
seja um booleano.Use o
MAIN
sub :Você pode digitar esses parâmetros em qualquer ordem:
E também capturará qualquer parâmetro extra, mostrando os parâmetros reais:
Se você estiver interessado apenas em parâmetros com um único traço, precisará de GetOpt :: Long, conforme indicado por Hakon
fonte