in reply to How to create installable modules ?

Inside your Makefile.PL, you have a WriteMakefile function. That function takes a list of key-value pairs which it will use to figure out what's going on and what to do when a user tries to install the module.

Inside that function, you should see an entry for PREREQ_PM => {}. This part allows you to specify all of the prerequisite modules along with their minimum versions. For example, this little snippet requires Foo::Bar version 1.02 or greater, Baz::Quux 2.70 or greater, and any version of CGI.pm.

WriteMakefile( #... PREREQ_PM => { Foo::Bar => 1.02, Baz::Quux => 2.70, CGI => 0, } #... );

Tools such as CPAN.pm and CPANPLUS can use this information to automatically install and update dependencies.

If you'd like to discover the module versions that you have installed, you can use a quick command line (among hundreds of other ways):

$ perl -MCGI -le 'print CGI->VERSION' 3.04

If you have the latest version (1.051.51) of my cpan(1) utility, you can use the -D switch to get module details. This is handy not only to check your installed version of the module, but to see what CPAN thinks is the current version.

$ cpan -D CGI CGI --------------------------------------------------------------------- (no description) L/LD/LDS/CGI.pm-3.15.tar.gz /usr/local/lib/perl5/5.8.4/CGI.pm Installed: 3.04 CPAN: 3.15 Not up to date Lincoln D. Stein (LDS) lstein@cshl.org

Good luck :)

--
brian d foy <brian@stonehenge.com>
Subscribe to The Perl Review

Replies are listed 'Best First'.
Re^2: How to create installable modules ?
by jkeenan1 (Deacon) on Jan 12, 2006 at 03:40 UTC
    If you'd like to discover the module versions that you have installed, you can use a quick command line (among hundreds of other ways):

    $ perl -MCGI -le 'print CGI->VERSION' # prints: 3.04

    Is there a similar trick for scripts installed from CPAN, such as cpan itself?

    I ask because I just installed the latest Bundle::CPAN distro and, when I called perldoc -m cpan, I saw this:

    # $Id: cpan,v 1.5 2005/12/24 00:59:08 comdog Exp $

    ... which leads me to believe that this is version 1.5, not version 1.05 as you suggest farther down in your posting.

    (Or is this an artifact of the way you set your $VERSION?

    my $VERSION = sprintf "%d.%02d", q$Revision: 296 $ =~ m/ (\d+) \. (\d+) /xg;

    jimk

      There isn't a similar trick for scripts unless the script is specially written for it. It would need methods (so, it has to be class), and it would need one named VERSION.

      Don't be fooled by the CVS file revision number. The distro was cpan-1.5 (the latest is cpan-1.51) which I set in Makefile.PL. The 1.05 is a mistake.

      The latest cpan script has a -v switch, though. :)

      --
      brian d foy <brian@stonehenge.com>
      Subscribe to The Perl Review
Re^2: How to create installable modules ?
by Anonymous Monk on Jan 11, 2006 at 09:27 UTC
    Hi Brian, Thanks for your reply. I have some more doubts. I have specified all the prerequisite modules in PREREQ_PM like this. PREREQ_PM => { XML::Writer => 0.531, XML::Sablotron => 0.98 } While doing "perl Makefile.pl" it is giving a warning that these modules are not installed . Is these modules will automatilcally installed? Other thing is that I need to check BDBXML is present in the system . Thanks and regards

      If you install the tools with CPAN.pm, my cpan script, or CPAN++, they can automatically handle the dependencies for you. Simply running the Makefile.PL script won't do that for you.

      --
      brian d foy <brian@stonehenge.com>
      Subscribe to The Perl Review
        Hi Brian, So how we install the module through CPAN utility after creating the makefile.pl. Thanks and regards