Hola @Todd Puedo ver que estaba molesto por las ediciones de otros, presumiblemente porque no está familiarizado con el modo en que SO funciona con respecto a las ediciones , por ejemplo, editando 'gracias' . Sin embargo, su propia edición de su pregunta es molesta para los demás, ya que devalúa el tiempo / esfuerzo de aquellos que le respondieron y otros que usan SO. Considere darme su bendición para restablecer su pregunta tal como estaba .
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 los argumentos que se procesan como opciones se quitan de @*ARGSpor get-options(). Entonces, los argumentos que no son opciones se dejan @*ARGSdespués. Ver respuesta actualizada
Håkon Hægland
Se establece helpen un valor predeterminado de 0. Probablemente sería mejor usar un booleano: help => Falseya que la opción de ayuda se usa generalmente para mostrar un mensaje de ayuda. He editado la respuesta de modo que helpsea un booleano.
Respuestas:
Aquí hay un ejemplo usando Getopt :: Long :
Ejemplo de ejecución:
fuente
@*ARGS
porget-options()
. Entonces, los argumentos que no son opciones se dejan@*ARGS
después. Ver respuesta actualizadahelp
en un valor predeterminado de 0. Probablemente sería mejor usar un booleano:help => False
ya que la opción de ayuda se usa generalmente para mostrar un mensaje de ayuda. He editado la respuesta de modo quehelp
sea un booleano.Usa el
MAIN
sub :Puede escribir estos parámetros en cualquier orden:
Y también capturará cualquier parámetro adicional, mostrándole los parámetros reales:
Si solo le interesan los parámetros con un solo guión, necesitará GetOpt :: Long como lo indica Hakon
fuente