2009-08-01 8 views
5

Sono un po 'confuso dai consigli contrastanti tra i documenti precedenti alla 5.10.0 e il più recente modulo version. Perl Best Practices rende abbastanza chiaro che le stringhe di versione ('v1.0.3') sono cattivi e uno si suppone specificare una versione come segue:Come si specifica una versione del pacchetto in Perl?

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

ma il modulo versione dice che siamo tornati a utilizzare stringhe di versione:

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

Siamo regrediti, o c'è un motivo dietro questo?

+0

Vedere anche http://stackoverflow.com/questions/1878108/whats-the-modern-way-of-declaring-which-version-of-perl-to-use – Ether

risposta

8

La tua quotazione da Perl Best Practices non ha proprio ragione. Specificamente, nude vstrings della forma

our $VERSION = v1.0.3; 

sono scoraggiate. Nella versione più recente di version.pm, la raccomandazione è di usare vere corde:

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

Questa funzionalità è stata aggiunta per facilitare la lettura, mentre in particolare evitare le trappole di corde nude descritto here.

come pagina doc si è collegato al dice, è possibile utilizzare le versioni senza il 'V' in attesa di pre usando la logica built-in in Perl 5.10:

Se si dispone di un modulo che utilizza un numero decimale $ VERSION (floating point), e non intendi mai cambiarlo, questo modulo non fa per te. Non c'è niente che version.pm ti guadagni sopra un semplice compito $ VERSION.

Quindi la risposta alla tua domanda è: usa la nuova sintassi "v1.0.3" se stai scrivendo un nuovo codice che usa version.pm. Rispettare un numero semplice se è così che è stato scritto il vecchio codice o se non si vuole dipendere esplicitamente da module.pm.

+2

Il vangelo più recente è quello vstrings della forma v1.0.3 come date sopra sono ok ma REALMENTE NUDI i vstrings della forma 1.0.3 (due decimali, non v) sono male, male, male. Questo è direttamente dai perl5-porters. – tsee