2016-08-08 7 views
4

Ich habe ein Skript, das einige Optionen zu nehmen, eine davon ist -i (Eingabe). Ich habe versucht, den folgenden Code die Eingabeparameter in ein Array zu erhalten:Speichern Sie mehrere Werte einer Befehlszeilenoption im Perl-Array

#!/usr/bin/perl 

use strict; 
use warnings; 
use Getopt::Long; 

my @input =(); 
my $help = ''; 
my $other = ''; 

GetOptions(
    'help'   => \$help, 
    'input=s{1,}' => \@input, 
    'other=s'  => \$other 
); 

Wenn ich versuche, es als ./my_script.pl -i param1 param2 -o aaa ich das bekommen zu laufen:

Error in option spec: "input=s{1,}" 

Wenn ich es explizit mit Perl als perl my_script.pl -i param1 param2 -o aaa laufen alles funktioniert reibungslos. Gibt es eine Möglichkeit, diese Parameter in ein Array zu bekommen (ohne @ARGV zu verwenden), ohne explizit perl von der Kommandozeile aus aufzurufen?

+1

Welche Version von Perl ist das? – simbabque

+0

Was kommt 'which perl' zurück? – Zaid

+0

'/ usr/bin/perl' – yonyon100

Antwort

2

Es stellt sich heraus, dass ich mehr als eine Version von Perl installiert habe. Einer von ihnen (der ältere) hat wahrscheinlich eine ältere Version des Moduls Getopt :: Long, das die Syntax input=s{1,} nicht unterstützt. Als ich Perl von der aktuellsten installierten Version anwendete, lief das Skript ohne Fehler.

Verwandte Themen