2012-06-28 7 views
5

Sto utilizzando il modulo Getopt::Long per elaborare gli argomenti della riga di comando.Utilizzo di Perl's Getopt :: Long, come posso impedire al modulo di cercare di abbinare nomi di opzioni ambigue?

Il comportamento tipico di questo modulo è che è possibile passare -f anziché il nome completo della variabile --file. Allo stesso tempo, se ho un'altra variabile riga di comando --find, e se io fornisco solo -f al prompt dei comandi, che sarebbe tornato con un errore:

Option f is ambiguous (file, find). 

Mi chiedevo come possiamo frenare tale uso ambiguo?

Grazie in anticipo.

+2

@downvoter: questa domanda è utile e chiara. – Zaid

+0

Grazie per la correzione Zaid. – Gentle

+2

Upvoters: la domanda [non mostra sforzi di ricerca] (http://stackoverflow.com/questions/how-to-ask), si può rispondere leggendo la documentazione da sola. – daxim

risposta

9

Dai un'occhiata alla documentazione 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.


Esempio:

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

my ($file, $fish); 

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

E i test:

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

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

Grazie. Esattamente quello che stavo cercando. – Gentle

3

Se si desidera attivare questa funzione automatica sigla fuori dovrete configurare Getopt :: Long utilizzando

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

Grazie. Perfezionare! – Gentle

Problemi correlati