2009-08-01 13 views
5

Jestem nieco zdezorientowany przez sprzeczne porady między dokumentami sprzed 5.10.0 a nowszym modułem version. Perl Best Practices sprawia, że ​​całkiem jasne, że wersji ciągów („v1.0.3”) są złe, a jeden ma określić wersję następująco:Jak określić wersję pakietu w Perlu?

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

ale moduł wersja mówi, że jesteśmy z powrotem przy użyciu ciągów wersji:

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

Czy cofnęliśmy się, czy też istnieje ku temu powód?

+0

Zobacz także http://stackoverflow.com/questions/1878108/whats-todern-way-of-declaring-which-version-of-perl-to-use – Ether

Odpowiedz

8

Twoja oferta z Perl Best Practices nie jest całkiem poprawny. W szczególności, nagie vstrings formularza

our $VERSION = v1.0.3; 

są zalecane. W najnowszej wersji version.pm, zaleca się używać prawdziwych strun:

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

Funkcjonalność ta została dodana w celu ułatwienia czytelności, a konkretnie uniknąć pułapek gołymi ciągów opisane here.

jako strona doc ty związanej mówi, można użyć wersji bez pre-pending „V” z użyciem wbudowanej logiki w Perl 5.10:

Jeśli masz moduł, który używa dziesiętnej $ WERSJA (zmiennoprzecinkowa), a Ty nie zamierzasz tego zmieniać, ten moduł nie jest dla ciebie. Nie ma niczego, co version.pm zyska na prostym przydziale $ VERSION.

Tak więc odpowiedź na twoje pytanie brzmi: użyj nowej składni "v1.0.3", jeśli piszesz nowy kod, który używa wersji.pm. Trzymaj się zwykłego numeru, jeśli tak został napisany stary kod, lub jeśli nie chcesz polegać jawnie na module.pm.

+2

Najnowsza ewangelia to ta, w której występują formy v1.0.3 jak podajesz powyżej są w porządku, ale NAPRAWDĘ BARDZO vstrings w postaci 1.0.3 (dwa miejsca dziesiętne, nie v) są złe, złe, złe. Jest to wprost z perl5-porterów. – tsee

Powiązane problemy