Perl6: come posso leggere i parametri misti dalla riga di comando?


9

Sto eliminando il post perché non sono stato consultato sulla censura / modifica.



Ciao @Todd. Vedo che sei stato sconvolto dalle modifiche degli altri, presumibilmente perché non hai familiarità con il modo in cui SO funziona per quanto riguarda le modifiche , ad esempio modificando "grazie" . Tuttavia la tua modifica della tua domanda è di per sé sconvolgente per gli altri in quanto svaluta il tempo / lo sforzo di coloro che hanno risposto a te e agli altri che usano SO. Per favore, considera di darmi la tua benedizione per ripristinare la tua domanda così com'era .
raiph,

Risposte:


9

Ecco un esempio usando 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;

Esempio di esecuzione:

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

@Todd Tutti gli argomenti che vengono elaborati come opzioni vengono rimossi @*ARGSda get-options(). Quindi gli argomenti non-opzioni vengono lasciati in @*ARGSseguito. Vedi risposta aggiornata
Håkon Hægland,

Viene impostato helpsu un valore predefinito pari a 0. Probabilmente sarebbe meglio usare un valore booleano: help => Falsepoiché l'opzione di aiuto viene in genere utilizzata per mostrare un messaggio di aiuto. Ho modificato la risposta in modo che helpsia un valore booleano.
Håkon Hægland,

8

Usa il MAINsub :

#!/usr/bin/env raku

use v6;

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

È possibile digitare questi parametri in qualsiasi ordine:

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

E catturerà anche qualsiasi parametro aggiuntivo, mostrandoti i parametri effettivi:

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

Se sei interessato solo ai parametri con un singolo trattino, avrai bisogno di GetOpt :: Long come indicato da Hakon

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.