В описании Getopt говорится, что и '-', и '-' принимаются для одной и той же опции, и что короткие опции могут быть связаны. Предполагая, что «помощь» является опцией, тогда:
script --help # succeeds
script --h # succeeds
script -h # fails
Если у нас есть две или более опций с уникальными первыми символами («ab», «cd»), -a c не работает, но - -а и - c делает. Я просмотрел все параметры getopt и подумал, что использовал их правильно. Я пропустил опцию или неправильно понял описание getopt?
Фактический код:
Getopt::Long::Configure ( "gnu_getopt"
, "auto_abbrev"
, "bundling"
, "ignore_case_always"
);
GetOptions ( 'normalize' => \$normalize
, 'exclude=s' => \@exclude
, 'help' => \$help
, 'include=s' => \@include
, 'recurse' => \$recurse
, 'update' => \$update
, '2update' => \$update2
, 'copy' => \$copy
, 'move' => \$move
, 'n' => \$normalize
, 'e=s' => \@exclude
, 'h' => \$help
, 'i=s' => \@include
, 'r' => \$recurse
, 'u' => \$update
, '2' => \$update2
, 'c' => \$copy
, 'm' => \$move
);
С повторным параметром getopts, позволяющим распознавать как "-h", так и "- час". С дублированными опциями, кажется, все работает как положено, но мое чтение описания getopt, похоже, говорит о том, что повторный код не нужен.