Является ли Perl GetOpt :: Long, принимающий сокращения переключателей, ошибкой? - PullRequest
4 голосов
/ 28 мая 2009

Это простой скрипт, который я написал для проверки обработки аргументов командной строки:

use Getopt::Long;

my $help = 0;

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

print "OK\n";

Результаты, которые я получил, следующие:

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

Кто-нибудь заметил это раньше? Является ли поведение (принятие он и Хель вместо помощи) потенциальной ошибкой?

Ответы [ 3 ]

13 голосов
/ 28 мая 2009

это документированная функция здесь

8 голосов
/ 28 мая 2009

Это функция . Опции могут быть сокращены до тех пор, пока результат не будет неоднозначным. Если вам не нужно это поведение, его можно отключить через configuration .

Если это была ошибка, то местом, где можно узнать, был ли он известным, является очередь ошибок в rt.cpan.org .

8 голосов
/ 28 мая 2009

Нет, это намеренно. Он принимает самую короткую не двусмысленную версию опции, поэтому если у вас есть другая опция - --hex, она не примет «--he», но примет «--hel».

...