Come si specifica una versione del pacchetto in Perl?
-
06-07-2019 - |
Domanda
Sono un po 'confuso dai consigli contrastanti tra i documenti precedenti alla 5.10.0 e la più recente versione modulo. Best Practices Pera chiarisce che le stringhe di versione ('v1.0.3') sono errate e una dovrebbe specificare una versione come segue:
use version; our $VERSION = qv('1.0.3');
ma il modulo versione dice che siamo tornati a usare le stringhe di versione:
use version 0.77; our $VERSION = qv("v1.2.3");
Siamo regrediti o c'è un motivo dietro questo?
Soluzione
La tua citazione da Perl Best Practices non è del tutto corretta. In particolare, nudo vstrings del modulo
our $VERSION = v1.0.3;
sono scoraggiati. Nell'ultima versione di version.pm, la raccomandazione è di usare stringhe vere:
use version 0.77; our $VERSION = qv("v1.2.3"); # shorthand
Questa funzionalità è stata aggiunta per facilitare la leggibilità, evitando specificamente le trappole di stringhe nude descritte qui .
Come dice la pagina del documento a cui ti sei collegato, puoi usare le versioni senza la 'v' pre-pendente usando la logica integrata in Perl 5.10:
Se hai un modulo che usa una $ VERSION decimale (virgola mobile) e non intendi mai cambiarlo, questo modulo non fa per te. Non c'è nulla che version.pm ti guadagni con un semplice incarico $ VERSION.
Quindi la risposta alla tua domanda è: usa il nuovo " v1.0.3 " sintassi se si sta scrivendo un nuovo codice che utilizza version.pm. Attenersi a un numero semplice se è così che è stato scritto il vecchio codice o se non si desidera dipendere esplicitamente da module.pm.