2016-01-26 5 views
11

Perl 6 ha un grande parsing integrato da riga di comando tramite MAIN. Tuttavia, ho affrontato un problema che sembra essere banale, ma non riesco a capirlo.Come rendere `-n = 3` lo stesso di` -n 3` in Perl 6?

Un semplice MAIN:

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

allora posso chiamare il mio script come:

$ ./test.p6 -n=1 

o:

$ ./test.p6 --num=1 

Ma non è possibile con:

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

o:

$ ./test.p6 --num 1 

ho passato la design document for MAIN senza fortuna. Come posso fare questo lavoro?

risposta

6

Alcune informazioni:

Questo è a reported bug. Se si scopre di più su ciò che non è menzionato in quel bug report, ad esempio trovare una soluzione alternativa, si prega di considerare l'aggiunta di un commento al report.

Per comodità, qui ci sono le altre due segnalazioni di bug esistenti che ho trovato per MAIN: Usage does not print required type for positional params in MAIN e fail to handle numbers as option name for MAIN.

Alcune opzioni:

Utilizzare un modulo opzionale. Forse Getopt::Tiny farà il trucco.

Help fix # 124664. Perl 6 è (per la maggior parte) scritto in Perl 6. Penso che il codice che mende la riga di comando principale grezza e li leghi alle variabili di firma MAIN sono le 20 righe circa process-cmd-args.

Problemi correlati