Comme avec tous les paquets perl, il est généralement une bonne idée d'avoir un $VERSION
défini en eux. Cela permet à d'autres choses de dépendre correctement de la version d'entre eux avec toutes les fonctionnalités dont ils ont besoin, soit en déclarant une dépendance dans leur Makefile.PL
ou équivalent, ou directement lors du chargement du module en utilisant use SomeModule 1.23;
.
La construction eval
vous montrer est une bidouille. Il existe une distinction entre les versions régulières d'un module et les versions de développement. Traditionnellement, cela a été indiqué par un $VERSION
avec un trait de soulignement. Cela signifie que quelque chose comme 0.001
serait une version normale et stable, tandis que quelque chose comme 0.001_01
serait une version de développement.
Le eval
est utilisé pour se débarrasser de ce trait de soulignement lors de l'exécution, tout en le conservant dans la chaîne de version que les différents outils, y compris PAUSE, le Perl Authors Upload SErver, extraient. C'est pour éviter les avertissements tels que 0.001_01 is not numeric in ...
.
Vous trouverez cet idiome dans beaucoup de code. Heureusement, il y a une bonne alternative à cela. Au lieu d'indiquer le statut de développement par rapport au statut de non-développement dans le numéro de version des modules individuels, vous pouvez également le faire dans l'archive tar que vous pouvez télécharger sur CPAN en utilisant l'indicateur -TRIAL
.
Au lieu de télécharger votre distribution en tant que My-Distribution-0.001.tar.gz
, vous pouvez le renommer en My-Distribution-0.001-TRIAL.tar.gz
. Les outils du CPAN le ramasseront et le traiteront comme une version de développement en conséquence. Notez que -TRIAL
ne fait pas partie du $VERSION
, uniquement du nom du tarball. Par conséquent, le eval
kludge devient inutile.
Notez également qu'il existe d'autres façons de déclarer $VERSION
est un paquet. A partir de Perl 5.12.0, vous êtes en mesure de le déclarer avec droit dans la déclaration de forfait:
package My::Package 0.001;
Cependant, rien de tout cela est spécifique à Moose
de quelque façon.
Connexes: http://stackoverflow.com/questions/3639403/perl-version-string-why-use-eval-expr et http://stackoverflow.com/questions/3632135/what-is-setting-version -bon pour. Mais en général, il n'y a pas de façon différente/particulière de gérer les versions de paquet dans Moose; les conventions normales s'appliquent. – Ether