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;
Schreibe einen Kommentar