É de Perl Getopt :: Longo aceitar abreviaturas de interruptores um bug?
Pergunta
Este é um script simples que tenho escrito para teste de manuseio argumento de linha de comando:
use Getopt::Long;
my $help = 0;
GetOptions(
'help|h|?' => \$help,
) or die "Error!";
print "OK\n";
Os resultados que obtive são as seguintes:
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
Alguém notou isso antes? É o comportamento (aceitar que ele e hel em vez de ajuda) um bug potencial?
Solução
Não, é intencional. Ele aceita a versão mais curta não ambiguious da opção, por isso, se você tinha outra opção "--hex", que não aceitaria "--he" mas aceitaria "--hel".
Outras dicas
é um recurso documentado aqui
Esta é uma recurso . As opções podem ser abreviados, desde que o resultado não é ambígua. Se você não quiser que este comportamento é possível desativá-lo através de configuração .
Se este fosse um erro, o lugar para verificar para saber se é ou não foi um conhecido é o bug fila em rt.cpan.org .