Я разобрался с ответом после написания вопроса, но перед тем, как его опубликовать - классический.
Лучший способ справиться с этим - использовать Getopt::Long
с bundling
:
use Getopt::Long qw(:config bundling);
GetOptions ("v+" => \$verbose);
Это обрабатывает -v -vv -vvv
, как и ожидалось: $verbose == 6
.
Если по какой-то причине вы не можете использовать или предпочитаете не использовать bundling
, единственным другим способом является определение параметров vv
, vvv
и т. Д. До разумного максимума:
use Getopt::Long;
GetOptions (
"v+" => \$verbose);
"vv" => sub { $verbose += 2 },
"vvv" => sub { $verbose += 3 },
);
Это также обрабатывает -v -vv -vvv
, как и ожидалось: $verbose == 6
.