В Getopt в Perl :: Длинная версия 2,39 я мог бы использоватьВ новой Getopt :: Long Как установить дополнительные значения по умолчанию
use Getopt::Long qw(:config gnu_getopt);
GetOptions(
\my %opts,
"codon-view|c:20", # Optional value, default 20
"consensus|C:50",
...
)
, чтобы указать, что если я использую -c
значение по умолчанию будет 20 положить в %opts
под ключ codon-view
, когда дано -c
, но нет явного значения для него. С другой стороны, -c
или --codon-view
не поставляется, то значение в хэш-таблице не сохраняется в %opts
. не
В 2.48 это уже не работает, и я не вижу в Getopt::Long's documentation
$ perl -E'
use Getopt::Long qw(:config gnu_getopt);
say $Getopt::Long::VERSION;
GetOptions(\my %opts, "codon-view|c:20");
say $opts{"codon-view"} // "[undef]"
' -- -c
2.39
20
$ perl -E'
use Getopt::Long qw(:config gnu_getopt);
say $Getopt::Long::VERSION;
GetOptions(\my %opts, "codon-view|c:20");
say $opts{"codon-view"} // "[undef]"
' -- -c
2.48
[undef]
Как можно достичь старого поведения?
Помощь!
Вы уверены, что работали в 2.39? Возвращаясь к 2.24 (выпущено в 2000 году), [документация для параметров со значениями] (https://metacpan.org/pod/release/JV/Getopt-Long-2.24/lib/Getopt/Long.pm# Options-with-values) последовательно показывает спецификации опций формы 'tag = s' или' tag: i', а не 'tag: 20'. – ThisSuitIsBlackNot
Я изменил сообщение, чтобы включить это. То, что вы получаете, соответствует моему поведению. Только когда «-c» или «--codon-view» задано без значения, которое изменяется в результате изменений между 2.39 и 2.48. Также есть изменения в FindOption, которые меняются между этими двумя версиями в отношении 'gnu_getopt'. – rocky
@ThisSuitIsBlackNot, Поиск ': number' – ikegami