¿Cómo se especifica una versión del paquete en Perl?
-
06-07-2019 - |
Pregunta
Estoy un poco confundido por los consejos contradictorios entre documentos anteriores a 5.10.0 y la versión más reciente módulo. Perl Best Practices deja bastante claro que las cadenas de versión ('v1.0.3') son malas y una se supone que especifica una versión de la siguiente manera:
use version; our $VERSION = qv('1.0.3');
pero el módulo de versión dice que hemos vuelto a usar cadenas de versión:
use version 0.77; our $VERSION = qv("v1.2.3");
¿Hemos retrocedido o hay alguna razón detrás de esto?
Solución
Su presupuesto de Perl Best Practices no es del todo correcto. Específicamente, desnudos vstrings del formulario
our $VERSION = v1.0.3;
se desaniman. En la última versión de version.pm, la recomendación es utilizar cadenas verdaderas:
use version 0.77; our $VERSION = qv("v1.2.3"); # shorthand
Esta funcionalidad se ha agregado para facilitar la legibilidad, al tiempo que evita específicamente las trampas de cadenas desnudas descritas aquí .
Como dice la página de documento a la que se vinculó, puede usar versiones sin la 'v' previa pendiente usando la lógica incorporada en Perl 5.10:
Si tiene un módulo que usa una $ VERSIÓN decimal (punto flotante), y no tiene la intención de cambiar eso, este módulo no es para usted. No hay nada que version.pm te gane sobre una simple asignación de $ VERSION.
Entonces, la respuesta a su pregunta es: use el nuevo " v1.0.3 " sintaxis si está escribiendo un nuevo código que usa version.pm. Apéguese a un número simple si así es como se escribió su código anterior, o si no desea depender explícitamente de module.pm.