2012-06-28 5 views
5

Estoy usando el módulo Getopt::Long para procesar los argumentos de línea de comando.Usando Getopt de Perl :: Long, ¿cómo puedo evitar que el módulo intente hacer coincidir nombres de opciones ambiguos?

El comportamiento típico de este módulo es que podríamos pasar -f en lugar del nombre completo de la variable --file. Al mismo tiempo, si tengo otra variable de línea de comandos --find, y si sólo a facilitar -f en el símbolo del sistema, que volvería con un error:

Option f is ambiguous (file, find). 

Me preguntaba ¿cómo podemos frenar tal uso ambiguo?

Gracias de antemano.

+2

@downvoter: Esta pregunta es útil y clara. – Zaid

+0

Gracias por la corrección Zaid. – Gentle

+2

Upvoters: la pregunta [no muestra esfuerzo de investigación] (http://stackoverflow.com/questions/how-to-ask), se puede responder leyendo solo la documentación. – daxim

Respuesta

9

un vistazo a la documentación Getopt::Long:

auto_abbrev

Allow option names to be abbreviated to uniqueness. Default is enabled unless environment variable POSIXLY_CORRECT has been set, in which case auto_abbrev is disabled.


Ejemplo:

use strict; 
use warnings; 
use Getopt::Long qw(:config no_auto_abbrev); 

my ($file, $fish); 

GetOptions("file=s" => \$file, "fish=s" => \$fish); 

Y las pruebas:

$ perl test.pl -fi 24 
Unknown option: fi 

$ perl test.pl -fis 24 
Unknown option: fis 
+0

Gracias. Exactamente lo que estaba buscando. – Gentle

3

Si desea activar esta función de auto apagado abreviatura que tendrá que configurar Getopt :: larga usando

use Getopt::Long qw(:config no_auto_abbrev) ; 
+0

Gracias. ¡Perfecto! – Gentle

Cuestiones relacionadas