Command-line arguments mit mehreren Werten

Mache ich ein perl-Skript und ich brauche, um mehrere Werte aus der Befehlszeile. Beispiel:

perl script.pl --arg1 op1 op2 op3

Bin ich mit Getopt::Long und bekomme ich diese zu arbeiten:

perl script.pl --arg1 op1 --arg1 op2 --arg1 op3

Aber ich wirklich brauchen (wollen) die erste option.

Habe ich überprüft, in Ihrer Dokumentation, und dies soll das tun, was ich will:

GetOptions('arg1=s{3}' => \@myArray);

http://search.cpan.org/~jv/Getopt-Long-2.38/lib/Getopt/Lang.pm#Options_with_multiple_values

Aber ich bin immer diese Fehlermeldung:

Fehler in option spec: "arg1=f{3}"

Irgendwelche Ideen /Lösungen?

  • Sie benötigen ein separates Dienstprogramm für Ihr Skript die Argumente? Alle Argumente aus der Kommandozeile gespeichert werden, innerhalb der $ARGV-array. Sie können dann Sortieren und verfolgen Sie intern in Ihrem Skript. Quelle: cyberciti.biz/faq/howto-pass-perl-command-line-arguments Alternativ können Sie Ihre ein argument, und der Benutzer muss wickeln Sie Sie in Anführungszeichen: perl script.pl --arg1 "op1 op2 op3"
  • Ich dachte über die Angebote und kann am Ende mit diesem, wenn ich keine andere Lösung finden. Ich bin mir bewusst, dass ich möglicherweise verwenden, $ARGV, aber ich habe viele Argumente und Getopt::Long wirklich hilft, verfolgen alles und es leider verpasst ARGV.
  • Nur eine Idee: vielleicht gibt es etwas falsch mit der shell. Können Sie einige einfache print-debugging, um sicher sein, dass Sie bekommen, was Sie erwarten, in Ihrem Skript?
  • Wenn ich den obigen code, und ich kann nicht laufen nichts, da das script abstürzt, bevor etwas getan wird mit der Fehlermeldung, die ich erwähnt.
InformationsquelleAutor Chris911 | 2012-05-11
Schreibe einen Kommentar