2016-01-26 4 views
11

Perl 6 verfügt über eine hervorragende integrierte Befehlszeilenanalyse über MAIN. Ich stand jedoch vor einem Problem, das scheinbar trivial ist, aber ich kann es nicht herausfinden.Wie man "-n = 3" in Perl 6 zu "-n 3" macht?

Ein einfaches MAIN:

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

Dann kann ich mein Skript nennen wie:

$ ./test.p6 -n=1 

oder:

$ ./test.p6 --num=1 

kann aber nicht mit:

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

oder:

$ ./test.p6 --num 1 

Ich ging durch die design document for MAIN ohne Glück. Wie kann ich das schaffen?

Antwort

6

Einige Informationen:

Das a reported bug ist. Wenn Sie mehr darüber erfahren, das in diesem Fehlerbericht nicht erwähnt wird, z. B. nach einer Problemumgehung, ziehen Sie in Betracht, dem Bericht einen Kommentar hinzuzufügen.

Für Ihre Bequemlichkeit, hier sind die anderen zwei vorhandenen Fehlerberichte, die ich für MAIN gefunden habe: Usage does not print required type for positional params in MAIN und fail to handle numbers as option name for MAIN.

Einige Optionen:

Verwenden Sie ein Optionsmodul. Vielleicht Getopt::Tiny wird den Trick tun.

Hilfe beheben # 124664. Perl 6 wird (meistens) in Perl 6 geschrieben. Ich denke, der Code, der rohe Hauptbefehlszeilenargumente trifft und sie an HAUPT-Signaturvariablen bindet, ist die 20 Zeilen oder so in process-cmd-args.

Verwandte Themen