Est-ce que GetOpt de Perl :: longue accepter les abréviations des commutateurs d'un bug?
Question
Ceci est un script simple que je l'ai écrit pour tester le traitement des arguments de ligne de commande:
use Getopt::Long;
my $help = 0;
GetOptions(
'help|h|?' => \$help,
) or die "Error!";
print "OK\n";
Les résultats que j'ai obtenu sont les suivants:
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
Quelqu'un at-il remarqué avant? Est-ce le comportement (accepter et il hel au lieu de l'aide) un bug potentiel?
La solution
Non, il est intentionnel. Il accepte la plus courte version non ambiguious de l'option, donc si vous aviez une autre option « --hex », il ne serait pas accepter « --he » mais il accepterait « --hel ».
Autres conseils
Ceci est un fonction . Les options peuvent être abrégées aussi longtemps que le résultat est ambigu. Si vous ne voulez pas ce comportement, il est possible de le désactiver via configuration .
Si cela était un bug, l'endroit idéal pour vérifier pour savoir qu'il était ou non un connu est le file d'attente bug rt.cpan.org .