2012-08-22 22 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 --testNo se puede analizar opciones de línea de comandos largos

Las impresiones encima de "0: 0". Soy nuevo en Perl, así que no he podido determinar por qué esto no funciona.

También ejecuté la sección "Opciones simples" de http://perldoc.perl.org/Getopt/Long.html#Simple-options y eso tampoco produjo nada.

+0

@ raina77ow - tuve ellos, simplemente no se incluyen en este post. –

Respuesta

11

Creo que la opción de línea de comando -s que incluye en su línea she-bang lo está mordiendo. De acuerdo con la perlrun documentation, la opción de línea de comandos -s:

permite interruptor rudimentario análisis de los conmutadores de la línea de comandos después del nombre del programa, pero antes de que los argumentos de nombre de archivo (o antes de un argumento -).

Si elimina esa opción, las cosas deberían funcionar como esperaba. También recomendaría eliminar el -w dado que ya está usando la directiva use warnings (la directiva use warnings está mucho más completa, reemplazando esencialmente la opción -w).

Así, el cuento largo, que su primera línea:

#!/usr/bin/perl 
+0

Gracias, lo estaba usando para comandos cortos anteriormente, pero quería reemplazarlos (ya que estaba usando palabras completas de todos modos). –

Cuestiones relacionadas