2009-08-01 21 views
5

Estoy un poco confundido por el conflicto de consejos entre los documentos anteriores a la 5.10.0 y el más reciente módulo version. Perl Best Practices hace que sea bastante claro que cadenas de versión ('v1.0.3') son malos y uno se supone para especificar una versión de la siguiente manera:¿Cómo se especifica una versión del paquete en Perl?

use version; our $VERSION = qv('1.0.3'); 

pero el módulo versión dice que estamos de vuelta a la utilización de 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?

+0

Véase también http://stackoverflow.com/questions/1878108/whats-the-modern-way-of-declaring-wich-version-of-perl-to-use – Ether

Respuesta

8

Su presupuesto de Perl Best Practices no es del todo correcto. Específicamente, se desaniman desnudos vstrings de la forma

our $VERSION = v1.0.3; 

. En la última versión del version.pm, la recomendación es usar verdaderas cadenas:

use version 0.77; our $VERSION = qv("v1.2.3");    # shorthand 

Esta funcionalidad se ha añadido a facilitar la lectura, mientras que evitar especialmente las trampas de cuerdas desnudas descrito here.

como la página de documento se ha vinculado a dice, puede utilizar versiones sin la 'V' en tramitación previa usando la lógica incorporada en Perl 5.10:

Si tiene un módulo que utiliza un decimal $ VERSIÓN (punto flotante), y no tiene la intención de cambiarlo alguna vez, este módulo no es para usted. No hay nada que la versión.pm te gane por una simple asignación de $ VERSIÓN.

Así que la respuesta a su pregunta es: utilice la nueva sintaxis "v1.0.3" si está escribiendo un código nuevo que utiliza version.pm. Limítese 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.

+2

El último evangelio es que las cadenas del formulario v1.0.3 como se muestra arriba están bien, pero las cadenas VERDADERAMENTE DESNUDAS de la forma 1.0.3 (dos decimales, no v) son malas, malvadas, malvadas. Esto es directo de los perl5-porters. – tsee

Cuestiones relacionadas