Search code examples
perlmoduleversioncpan

How can I find the version of an installed Perl module?


How do you find the version of an installed Perl module?

This is in an answer down at the bottom, but I figure it important enough to live up here. With these suggestions, I create a function in my .bashrc

function perlmodver {
    perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
    " is installed.\n"' $1
}

Solution

  • Why are you trying to get the version of the module? Do you need this from within a program, do you just need the number to pass to another operation, or are you just trying to find out what you have?

    I have this built into the cpan (which comes with perl) with the -D switch so you can see the version that you have installed and the current version on CPAN:

    $ cpan -D Text::CSV_XS
    
    Text::CSV_XS
    -------------------------------------------------------------------------
            Fast 8bit clean version of 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
            Installed: 0.32
            CPAN:      0.54  Not up to date
            H.Merijn Brand (HMBRAND)
            h.m.brand@xs4all.nl
    

    If you want to see all of the out-of-date modules, use the -O (capital O) switch:

    $ cpan -O
    Module Name                                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
    ... and so on
    

    If you want to see this for all modules you have installed, try the -a switch to create an autobundle.