56 votes

Comment puis-je trouver la version d'un module Perl installé ?

Comment trouver la version d'un module Perl installé?

C'est une réponse en bas, mais je la considère assez importante pour vivre ici. Avec ces suggestions, je crée une fonction dans mon .bashrc

function perlmodver {
    perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " de " . $ARGV[0] . \
    " est installée.\n"' $1
}

60voto

brian d foy Points 71781

Pourquoi essayez-vous d'obtenir la version du module? En avez-vous besoin à partir d'un programme, avez-vous juste besoin du numéro à passer à une autre opération, ou essayez-vous simplement de savoir ce que vous avez?

Je l'ai intégré dans le cpan (qui est livré avec perl) avec l'option -D pour que vous puissiez voir la version que vous avez installée et la version actuelle sur CPAN :

$ cpan -D Text::CSV\_XS

Text::CSV\_XS
-------------------------------------------------------------------------
        Version rapide et propre en 8 bits de Text::CSV
        H/HM/HMBRAND/Text-CSV\_XS-0.54.tgz
        /usr/local/lib/perl5/site\_perl/5.8.8/darwin-2level/Text/CSV\_XS.pm
        Installée : 0.32
        CPAN :  0.54  Non à jour
        H.Merijn Brand (HMBRAND)
        h.m.brand@xs4all.nl

Si vous voulez voir tous les modules obsolètes, utilisez l'option -O (O majuscule) :

$ cpan -O
Nom du Module                                Local    CPAN
-------------------------------------------------------------------------
Apache::DB                                0.1300  0.1400
Apache::SOAP                              0.0000  0.7100
Apache::Session                           1.8300  1.8700
Apache::SizeLimit                         0.0300  0.9100
Apache::XMLRPC::Lite                      0.0000  0.7100
... et ainsi de suite

Si vous voulez voir cela pour tous les modules que vous avez installés, essayez l'option -a pour créer un autobundle.

57voto

zigdon Points 8753

La plupart des modules (surtout ceux de The CPAN) ont une variable $VERSION :

perl -MSome::Module -le 'print $Some::Module::VERSION'

33voto

jmcnamara Points 6100

VERSION est une méthode UNIVERSAL de toutes les classes Perl. Vous pouvez l'utiliser pour obtenir la version du module (si elle a été définie, ce qui est généralement le cas).

Voici une ligne où vous n'avez qu'à ajouter une fois le nom du module:

perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' Some::Module

21voto

Penfold Points 1904

Il existe un truc pour taper moins de choses, qui fonctionne à condition que votre module n'ait pas quelque chose de fou comme un horodatage Unix en tant que numéro de version.

perl -MFoo::Bar\ 9999

Cela fonctionne parce que ce que cela traduit est

use Foo::Bar 9999;

c'est-à-dire une version de Foo::Bar qui est au moins la version 9999 ou plus récente. Et ce que vous obtenez est

Foo::Bar version 9999 requise - ce n'est que la version 1.1.
BEGIN failed - compilation aborted.

(Astuce intéressante que j'ai apprise de Matt Trout.)

8voto

Jon Ericson Points 9703

Si vous avez de la chance, le module aura une variable de package appelée $VERSION :

$ perl -MCPAN -e 'print "$CPAN::VERSION\n"'
1.9205

Cela est nécessaire pour que les modules soient distribués sur CPAN, mais les modules développés en interne peuvent suivre une convention différente ou aucune du tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X