11
votes

Comment déclarer le numéro de version pour un module PERL?

Je pensais que je savais comment déclarer des numéros de version pour des modules. Mais après avoir lu l'article "$ Version confusion" à livres de Perl modernes, un moderne Perl blog ; Je suis maintenant plus confus que j'ai commencé. (L'ignorance était en effet la bonheur.) Non pas que j'ai des abrangements sur le code "parfait", mais je suis vraiment curieux pourquoi une question aussi triviale n'a apparemment aucune réponse définitive pour une langue aussi mature.

J'espère que la communauté peut trouver une réponse définitive à cette question car il existe de meilleures choses pour les pirates informatiques Perl que de discuter de différentes manières de déclarer des numéros de version.


6 commentaires

"Je suis juste vraiment curieuse pourquoi une telle affaire triviale n'a apparemment aucune réponse définitive pour une langue aussi mature". Il y a plus d'une façon de le faire (TM) ;-) ;-(


Excellente réponses à tous. @Thilo, plus d'une manière en effet.


Les versions à Perl sont une histoire loong et douloureuse. David Golden a écrit une série de poteaux de blog qui racontent une grande partie de l'histoire. C'est vraiment pas une question simple, même si cela peut sembler. (Vous savez, comme le dernier théorème de Fermat;) À la suite de la pensée de David et de nombreuses discussions sur la liste Perl5-Porters, nous pensons avoir élaboré une voie raisonnable à l'avant sans rompre la compatibilité à l'envers. Recherchez les archives P5P pour plus de détails.


dagolden.com/index.php/369/version -numbers-devraient-être-ennuyeux


@Daxim Cool Article. Jamais su (ou dérangé) de l'histoire derrière elle. Les numéros de version devraient être ennuyeux.


C'est Perl partout, la majeure partie de celle-ci est un petit-déjeuner de chien et vous passez plus de temps à travailler sur des questions triviales comme celle-ci que nécessaire. Ils couvrent en disant «il y a plus d'une façon de le faire (TM)» comme si c'était une bonne chose. Je préférerais beaucoup dépenser mon temps d'ajouter une fonctionnalité utile que de perdre mon temps à lire un article sur l'histoire de la version de la version à Perl (un où je suis sûr qu'ils ont fait de nombreuses erreurs, changèrent plusieurs fois et écrit un module pour compenser pour ces erreurs).


4 Réponses :


12
votes

Utiliser la version du module

Si l'argument de la version est présent entre le module et la liste, alors l'utilisation appellera la méthode version dans la classe module avec la version donnée comme un argument. La méthode par défaut , héritée à partir de la classe universelle , croasses si la version donnée est supérieure à la valeur de la variable $ module :: version .

qui fait un motif simple: xxx


1 commentaires

J'utilise "notre" depuis sa présence.



7
votes

La plupart de votre confusion est, je soupçonne, en raison de la page que vous avez liée préconisant la version 1.2.3 Version de style "Numéros". Celles-ci ne sont pas entièrement soutenues dans toute la boîte à outils (peu importe ce que les autres peuvent dire) et ne doivent pas être utilisés. Ils n'offrent aucun avantage sur une version numérique simple, car elles doivent être traitées comme un nombre juste un nombre à de nombreux endroits (par exemple, 1.2.3 est traité comme 1.002003).

La bonne façon de déclarer un numéro de version est simple, à moins que Vous avez un composant XS ou un indicateur alpha / bêta (_ dans le numéro de version), car certaines choses doivent voir une chaîne de version et certaines choses d'un numéro de version. Ensuite, il devient plus compliqué. Perlmodstyle fournit la bonne incantation: P>

Si vous voulez libérer une «bêta» ou 'Alpha' version d'un module mais ne veulent que cpan.pm de l'énumérer comme le plus récent Utilisez un '_' après la version régulière nombre suivi d'au moins 2 chiffres, par exemple. 1.20_01. Si vous faites cela, le Suite Idiom est recommandé: P>

$VERSION = "1.12_01";
$XS_VERSION = $VERSION; # only needed if you have XS code
$VERSION = eval $VERSION;


2 commentaires

+1 pour mentionner l'IDIOM EVAL. Vous voudrez peut-être laisser cela dans tout le temps, vous n'avez donc pas oublié de le mettre quand c'est nécessaire.


Une autre façon de gérer les versions alpha est d'ajouter la chaîne -trial au numéro de version de la distribution (pas le module). E.G., cpan va lister foo-bar-1.90-essai.tar.gz (contenant FOO :: Bar 1.90) en tant que version de développement, comme s'il contenait un soulignement. DIST :: Zilla facilite la libération d'un tel essai.



10
votes

Ma position est le garder simple . Déclarez votre version en tant que chaîne contenant un numéro de point flottant. laissez les trucs à plusieurs décimales pour les numéros de version de Perl et perl 6.

Si votre module nécessite Perl 5.6.0 ou ultérieur: xxx

ou, si vous devez rester compatible avec Perl 5.005 ou plus: xxx

Quelques points supplémentaires: < ol>

  • utilise toujours le même nombre de chiffres après le point décimal. Certains outils d'emballage (non Perl) pensent que la version 1.11 vient après 1.9 mais avant 1,90. Si vous devez modifier le nombre de chiffres que vous utilisez, incrémentez le numéro de version majeur en même temps.

  • déclarez toujours la version comme une chaîne. Cela garde les zéros traînant de disparaître. (Voir point 1.)

  • Si vous souhaitez créer une version instable (par exemple alpha ou bêta), appendez la chaîne -trial au numéro de version de la distribution (par exemple, téléchargez Foo-bar-1.90-essai.tar.gz contenant foo :: bar 1.90). Cela indique à CPAN de l'énumérer comme une version de développement, comme si elle contenait un soulignement. dist :: Zilla permet de faire des versions d'essai.

    Une chaîne contenant un numéro de point flottant fonctionnera avec toutes les versions de Perl, toutes les versions de Makemaker & Module :: Build et toutes les distributions Linux dont je suis au courant.


  • 3 commentaires

    REMARQUE: Si vous utilisez actuellement des versions multiples-décimales, ne pas basculer sur une version à point flottant, sauf si vous incrémentez le numéro de version majeur en même temps (par exemple, il est prudent d'aller de 4.3.2 à '5,00', mais pas à '4.40').


    Correction: À peu près tout dans le monde, outre Perl pense que 1.11 vient après 1.9 :)


    @Hobbs: Bien sûr? Écrivez un programme comme: 1.11> 1.9? Imprimer "Oui": Imprimer "Non"



    0
    votes

    La standard de la version PERL est décrite dans le module version et il y a deux types:

    1. Style décimal en pointillé comme celui utilisé par Perl lui-même, c'est-à-dire V5.8.32 ou seulement 5,8.32; ou li>
    2. style décimal tel que 1.0203 li> ol>

      dans le style décimal pointillé, qui est le style recommandé, les trois chiffres représentent respectivement majeur, mineur et patch. Plus sur cet ici sur le page wikipedia p>

      Les versions alpha sont marquées avec Les chiffres séparés du reste par un soulignement, tels que: 5.8.32_01 P>

      Les exigences préconisées par Perl sont les suivantes: P>

      1. "utilise toujours une décimale en pointillé avec (au moins) trois composants" p> li>

      2. "utilise toujours un leader-v" p> li>

      3. "citez toujours la version" p> li> ol>

        Ainsi, lors de la déclaration d'une version dans un module Perl, on utiliserait simplement quelque chose comme: p> xxx pré>

        lorsque vous utilisez un module, selon La documentation Perl , on écrirait: P>

        BEGIN { require Module; Module->VERSION(12.34) }
        


    0 commentaires