2009-05-28 4 views
4

Dies ist ein einfaches Skript, das ich geschrieben habe Handhabung Befehlszeilenargument zu testen:Ist Perl's GetOpt :: Long akzeptieren Abkürzungen von Switches ein Fehler?

use Getopt::Long; 

my $help = 0; 

GetOptions(
'help|h|?' => \$help, 
) or die "Error!"; 

print "OK\n"; 

Die Ergebnisse sind ich habe wie folgt:

D:\>perl test.pl --help 
OK 

D:\>perl test.pl --hell 
Unknown option: hell 
Error! at test.pl line 10. 

D:\>perl test.pl --he 
OK 

D:\>perl test.pl --hel 
OK 

jemand dies vorher bemerkt hat? Ist das Verhalten (Annahme von ihm und Hel anstelle von Hilfe) ein möglicher Fehler?

Antwort

8

-Nr, es ist beabsichtigt. Es akzeptiert die kürzeste nicht-mehrdeutige Version der Option. Wenn Sie also eine andere Option "--hex" hätten, würde "-he" nicht akzeptiert, aber "--hel" würde akzeptiert.

+0

Vielen Dank. – Andy

13

es ist ein Merkmal here

+0

Vielen Dank. Das war schnell. – Andy

+1

Sie sollten die Antwort dann als "akzeptiert" markieren. –

8

Dies ist ein feature. Optionen können abgekürzt werden, solange das Ergebnis nicht mehrdeutig ist. Wenn Sie dieses Verhalten nicht möchten, können Sie es über configuration deaktivieren.

Wenn dies ein Fehler war, ist der Ort zu überprüfen, um herauszufinden, ob es ein bekannter war, bug queue bei rt.cpan.org.

Verwandte Themen