getopts: Eine Option mehrfach zulassen
Andreas09
- perl
Hallo zusammen,
ich hab ein Problem und zwar möchte ich an mein Skript mehrere Werte übergeben:
skriptname -s wert1 -s wert2
Und ich möchte beide Werte speichern.
Bisher hab ich halt:
getopts( 'hdovf:s:t:', \%opts );
Aber in $opts{s}
steht immer nur der letzte Wert, hier also wert2.
Hat jemand eine Idee, wie ich das lösen kann?
So etwas wäre auch noch ok -s wert1 wert2, falls es so etwas machbar wäre.
Grüße
Andi
hi,
Hat jemand eine Idee, wie ich das lösen kann?
Workaround.
So etwas wäre auch noch ok -s wert1 wert2, falls es so etwas machbar wäre.
Ja, aber andersherum ists besser:
getopts('x', %opts);
$0 wert1 wert2 wert3 -x [-y -z ...]
ARGV 0 1 2 3 4
Kontrollstruktur:
Wenn $opts{x} => Alle Argumente von 1 bis -x einlesen. -x wäre in diesem Fall also $ARGV[4] und @ARGV[1..3] das Array mit den Werten zu.
Falls Du dies Script weitergibst, schreibe eine verständliche Hilfe dazu.
Hotte
Korr:::
$0 wert1 wert2 wert3 -x [-y -z ...]
ARGV 0 1 2 3 4
0 1 ...
Die Argumentenliste beginnt natürlich bei [0]. Also erst die Argumente und dann die Schalter, das lässt sich besser parsen und wird bei den meisten CL-Programmen so gehandhabt.
Horst