2012-06-28 9 views
5

Używam modułu Getopt::Long do przetwarzania argumentów wiersza poleceń.Używając Perop Getopt :: Long, jak mogę zapobiec temu, aby moduł próbował dopasować niejednoznaczne nazwy opcji?

Typowym zachowaniem tego modułu jest możliwość podania nazwy -f zamiast pełnej nazwy zmiennej --file. Jednocześnie jeśli mam innego wiersza poleceń zmiennej --find i gdybym dostarczyć tylko -f w wierszu polecenia, to powrót z błędem:

Option f is ambiguous (file, find). 

Zastanawiałem się, w jaki sposób możemy ograniczyć taką niejednoznaczną wykorzystanie?

Z góry dziękuję.

+2

@downvoter: To pytanie jest przydatne i jasne. – Zaid

+0

Dziękuję za korektę Zaid. – Gentle

+2

Awanseści: pytanie [nie wykazuje wysiłku badawczego] (http://stackoverflow.com/questions/how-to-ask), można odpowiedzieć czytając samą dokumentację. – daxim

Odpowiedz

9

Zapraszamy do obejrzenia dokumentacji 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.


Przykład:

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

my ($file, $fish); 

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

Testy:

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

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

Dziękuję. Dokładnie to, czego szukałem. – Gentle

3

Jeśli chcesz wyłączyć tę funkcję auto skrót od będziesz musiał skonfigurować Getopt :: Długi korzystając

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

Dziękuję. Idealny! – Gentle

Powiązane problemy