2012-08-22 14 views
5
#!/usr/bin/perl -sw 
use strict; 
use warnings; 
use Getopt::Long; 

my $remote = 0; 
my $test = 0; 
GetOptions ('remote' => \$remote, 'test' => \$test); 
print "$remote:$test\n"; 

perl test.pl --remote --testUnable Befehlszeile lange Optionen

Die obigen Drucke analysieren "0: 0". Ich bin neu bei Perl, deshalb konnte ich nicht feststellen, warum das nicht funktioniert.

Ich lief auch die "Simple Options" -Abschnitt von http://perldoc.perl.org/Getopt/Long.html#Simple-options und das hat auch nichts produziert.

+0

@ raina77ow - ich habe sie, nur nicht in diesem Beitrag nicht enthalten ist. –

Antwort

11

Ich glaube, die -s Befehlszeilenoption, die Sie in Ihre She-Bang-Linie aufnehmen, beißt Sie. Nach den perlrun documentation, die -s Befehlszeilenoption:

ermöglicht rudimentär Schalter Parsen für Schalter in der Befehlszeile nach dem Programmnamen aber vor allen Dateinamen Argumente (oder vor dem Argumente -).

Wenn Sie diese Option entfernen, sollten die Dinge wie erwartet funktionieren. Ich würde auch empfehlen, die -w zu entfernen, da Sie bereits die use warnings Direktive verwenden (die use warnings Direktive ist viel ausführlicher gekennzeichnet, die -w Option im Wesentlichen ersetzend).

So lange Geschichte kurz, machen Sie Ihre erste Zeile:

#!/usr/bin/perl 
+0

Danke, ich benutzte das für kurze Befehle früher, aber wollte diese ersetzen (da ich sowieso ganze Wörter verwendete.) –