Como você especificar uma versão do pacote em Perl?
-
06-07-2019 - |
Pergunta
Estou um pouco confuso com conselhos conflitantes entre pré-5.10.0 documentos e a módulo . Perl Best Practices torna bastante claro que strings de versão ( 'v1.0.3') são ruins e um é suposto para especificar uma versão da seguinte forma:
use version; our $VERSION = qv('1.0.3');
mas o módulo versão diz que estamos de volta ao uso de strings de versão:
use version 0.77; our $VERSION = qv("v1.2.3");
Temos nós regredimos, ou há uma razão por trás disso?
Solução
A sua citação de Perl Best Practices não é muito justo. Especificamente, nu vstrings da forma
our $VERSION = v1.0.3;
são desencorajados. Na versão mais recente do version.pm, a recomendação é usar verdadeiros strings:
use version 0.77; our $VERSION = qv("v1.2.3"); # shorthand
Esta funcionalidade foi adicionada para a legibilidade da ajuda, enquanto especificamente evitar as armadilhas de cordas nuas descrito aqui .
Como a página doc é ligada ao diz, você pode usar versões sem a pré-pendente 'v' usando lógica interna em Perl 5.10:
Se você tem um módulo que usa um decimal $ VERSÃO (ponto flutuante), e você não pretende mudar isso, este módulo não é para você. Não há nada que version.pm ganhos que você mais de uma atribuição $ versão simples.
Portanto, a resposta à sua pergunta é: usar a nova sintaxe "v1.0.3" se você estiver escrevendo novo código que usos version.pm. Atenha-se um número simples, se é assim que o seu antigo código foi escrito, ou se você não quer depender explicitamente module.pm.