Est-ce que GetOpt de Perl :: longue accepter les abréviations des commutateurs d'un bug?

StackOverflow https://stackoverflow.com/questions/921109

  •  06-09-2019
  •  | 
  •  

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?

Était-ce utile?

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

il est une caractéristique documentée

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top