Andreas09: getopts: Eine Option mehrfach zulassen

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

  1. 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

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. 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

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.