Thread wer hat lust auf ein Spiel? (61 answers)
Opened by conray at 2010-02-19 20:31

topeg
 2010-03-10 01:09
#134357 #134357
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2010-03-09T23:26:35 conray
Könnte man dann jetz das ganze auch mit zb "EierlegendeWollMilchSau.pl -dump -get_country -pwgen" etc starten? oder sehe ich da was falsch?

Fast bei "-get_country" und "-pwgen" wird Getopt nörgeln, weil keine Parameter übergeben wurden.
Aber im Prinzip richtig, man kann mehrere Optionen nacheinander ausführen. Mehrfache Aufrufe werden aber ignoriert.

Ein Block für ein Kommando setzt sich so zusammen:

Code: (dl )
1
2
3
4
5
6
'<kommandozeilenname>[,<zusätzlicher parametter>[,...]]' => [
"<hilfetext Kommado>\t\t<Hilfetext Beschreibung>",
sub {
<Programmcode>
},
'<optionaler Parameter zur Steuerung der Ausführung>'],


Die Parameterübergabe an den Programmcode mit Beispielen:

Die Optionen sollen sein: kommando=s,option1=i,option2
In der Kommandozeile steht: -option1=100 -kommando test --option2
An den Programmcode wird übergeben: ('test',100,1)

Die Optionen sollen sein: kommando,option1,option2=s
In der Kommandozeile steht: -option2=test -kommando
An den Programmcode wird übergeben: (1,0,'test')

Also die Reihenfolge von Optionen sind egal, das heißt aber auch, dass sie eindeutig sein müssen. Ansonsten bekommt der die Option der als erster geparsed wird. Die in der Optionsliste angeben Reihenfolge der Optionen bestimmt auch die Reihenfolge der Übergabe an die Funktion mit dem Code.

Der Hilfetext teilt sich in zwei teile der erste ist eine kurzbeschreibung der Kommandozeilenoption, der zweite ist eine ausführliche Beschreibung. "\t\t" trennt diese beiden (damit splitte ich den Text).
Ich versuche den Hilfetext etwas hübscher zu formatieren, darum das das striktere Format.

Den Abführzeitpunkt kann man mit dem Parametter an der dritten Stelle des Array beeinflussen.
'runn now' bewirkt, dass bei jedem Aufruf der Option sofort der Programmcode ausgeführt wird. Das bedeutet aber auch, dass keine zusätzlichen Parameter übergeben werden können. Dafür ist es aber möglich selber Parameter aus @ARGV zu holen wenn man will.
'runn first' bewirkt, dass der der Code möglichst früh ausgeführt wird, nachdem das Verarbeiten der Kommandozeilenoptionen abgeschlossen ist. Je später die Option in der @ARGV steht um so früher wird sie ausgeführt.
'runn last' ist die Umkehrung von 'runn first' und das Defaultverhalten.

Ach ja.
Der Hilfetext sieht jetzt so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
usage: eierlegendewollmildsau.pl <parameters>

parameters:
assimilate=s => --assimilate newparam.pl assimilate more perl code into this script
devil => --devil Don't try that
dummy => --dummy Doing nothing!
dump => --dump dumps itself to STDOUT
get_country=s => --get_country <ip> single-host 32bit decimal
help|h => --help print out this usagetext
mirror=s => --mirror <file|-> mirror file or STDIN
ping=s,range=i => --ping <ip> [--range=<range>] trys to ping an ip or an range of ip addresses.
pwgen=i => --pwgen generates an (secure) password
truemirror=s => --truemirror <file|-> mirror file or STDIN
whereami => --whereami print out the filelocation

Last edited: 2010-03-10 01:12:59 +0100 (CET)

View full thread wer hat lust auf ein Spiel?