Perl: command-line-Verarbeitung mit GetOptions
Problem:
Ich habe ein Skript, das aufgerufen werden kann, in eine der folgenden Arten:
./script.pl -a
./script.pl [-w] -<i|d|r|t>
Bedeutung, die -w
flag ist optional, aber entweder -i
oder -d
oder -r
oder -t
muss angegeben werden.
Wenn der Benutzer nicht rufen Sie das Skript in jede dieser Möglichkeiten, die Funktion usage
genannt werden sollte.
Mein Versuch:
sub fInv
{
print "fInv"."\n";
}
sub fDisp
{
print "fDisp"."\n";
}
sub fRanking
{
print "fRanking"."\n";
}
sub fTickets
{
print "fTickets"."\n";
}
sub usage
{
print "Usage shown here.\n";
}
%options = (i => \&fInv, d => \&fDisp, r => \&fRanking, t => \&fTickets);
$write = 0;
GetOptions("a" => \&usage)
or GetOptions("w" => \$write,
keys($options) => \&options) # This is clearly wrong
or die usage;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Macht nicht viel Sinn zu haben 5 Variablen stellen eine Auswahl.
Im Grunde, verwenden Sie all die verschiedenen Optionen und testen Sie die Kombinationen, die Sie wollen.
Aber ich würde empfehlen, Sie gehen lange, das ist mit dem parameter Namen. Standardmäßig
Getopt::Long
wird es ermöglichen, die parameter abriviations. Wenn-i
ist für integer, ( ich weiß nicht, Sie geben nicht zu viele Hinweise zu dem, was diese Parameter bedeuten), gehen Sie vor und geben Sie-integer
als parameter (und verwenden$integer
statt$opt_i
). Benutzer können abkürzen-integer
als-i
da keine anderen parameter beginnt mit-i
. Sie können auch Aliase zu:Dann könnte ein Benutzer verwenden
-divider
oder-i
als parameter.Jetzt zu diesem Pod::Usage...
Perl hat eine Dokumentation system namens POD (es steht für Plain Old Documentation). Es ist ziemlich einfach zu Holen, und ermöglicht es Ihnen, um Unterlagen direkt in Ihr Programm.
Können Sie finden diese Dokumentation, indem Sie mit der
perldoc
Befehl, die kommt mit Perl:Dies wird drucken Sie Ihre POD in voller Pracht. Wenn jemand wissen muss, wie Sie das Programm und was es tut, ist es Recht.
Pod::Usage
wird standardmäßig drucken Sie die Synopsis Abschnitt Ihres POD und dann beenden. Es ist toll, wenn ein Benutzer die falschen option, oder Typenscript.pl -help
.Gibt es viele Optionen. Zum Beispiel, können Sie drucken Sie die Synopsis und die Optionen Abschnitt oder die ganze Schule oder ausgewählten bits und Stücke.
Es ist eine großartige Möglichkeit, um Ihren code dokumentieren, und sollten ermutigt werden, von allen.
Das einzige Problem, das ich hatte ist, dass die Dokumentation auf der POD-Dokumentation nicht ausdrücklich erwähnen, dass Befehl Absätze (die Zeilen, die beginnen mit einem Gleichheitszeichen) muss eine Leerzeile vor und nach Ihnen.