Wie analysiere und validiere ich Befehlszeilenargumente in Perl 6?

9

In Perl 5 kann ich Getopt::Long verwenden, um Kommandozeilenargumente mit einer gewissen Validierung zu parsen (siehe unten von Ссылка ).

%Vor%

Hier erzeugt =i in "length=i" eine Einschränkung des numerischen Typs für den mit --length verknüpften Wert und =s in "file=s" erzeugt eine ähnliche Bedingung für den Zeichenkettentyp.

Wie mache ich etwas ähnliches in Perl 6?

    
Christopher Bottoms 17.04.2015, 15:59
quelle

1 Antwort

14

Grundlagen

Diese Funktion ist in Perl 6 integriert. Hier ist das Äquivalent zu Ihrem Getopt::Long Code in Perl 6:

%Vor%

MAIN ist eine spezielle Subroutine, die Befehlszeilenargumente basierend auf ihrer Signatur automatisch analysiert.

Str und Num stellen Beschränkungen für Zeichenfolgen und numerische Zeichen bereit.

Bool macht $verbose ein binäres Flag, das False ist, wenn es fehlt oder wenn es als --/verbose aufgerufen wird. (Das / in --/foo ist eine übliche Unix-Befehlszeilensyntax zum Setzen eines Arguments auf False ).

: wird den Variablen in der Signatur der Unterroutine vorangestellt und benennt sie (anstelle von positionellen) Parametern.

Die Standardwerte werden mit $variable = gefolgt von dem Standardwert angegeben.

Aliase

Wenn Sie ein einzelnes Zeichen oder andere Aliase möchten, können Sie die :f(:$foo) -Syntax verwenden.

%Vor%

:x(:$smth) erstellt in diesem Beispiel zusätzlichen Alias ​​für --smth , z. B. den kurzen Alias -x . Mehrere Aliase und vollständig benannt ist auch verfügbar, hier ist ein Beispiel: :foo(:x(:bar(:y(:$baz)))) erhalten Sie --foo , -x , --bar , -y und --baz und wenn einer von ihnen an% co_de übergeben wird %.

Positionsargumente (und Beispiel)

$baz kann auch mit Positionsargumenten verwendet werden. Zum Beispiel, hier ist Raten Sie die Nummer (aus Rosetta Code) . Es ist standardmäßig auf einen Wert von 0 und einen Wert von 100 eingestellt. Es kann jedoch eine beliebige Min- und Max-Zahl eingegeben werden. Mit MAIN kann der Parameter innerhalb der Subroutine geändert werden:

%Vor%

Nutzungsnachricht

Wenn Ihre Befehlszeilenargumente nicht mit einer is copy -Signatur übereinstimmen, erhalten Sie standardmäßig eine nützliche Verwendungsnachricht. Beachten Sie, wie Subroutinen und Parameterkommentare, die mit MAIN beginnen, intelligent in diese Verwendungsnachricht integriert werden:

%Vor%

Hier ist #= kein definierter Kommandozeilenparameter und löst somit diese Verwendungsnachricht aus.

Siehe auch

Siehe auch 2010 und die 2014 Perl 6 Adventskalenderbeiträge auf --help , die nachgestellten Befehlszeilenargumente in Perl 6 und die Abschnitt von Übersicht 6 über MAIN .

    
Christopher Bottoms 17.04.2015, 15:59
quelle

Tags und Links