How to manage several versions of Perl modules during the install?

Hello, I would really appreciate any advice on this issue:

My Perl Module Environment:

/usr/lpp/perl/lib/5.8.7 => has the Perl modules that come with the base Perl installation. Comes first in @INC concatination.

/usr/lpp/perl/lib/site_perl/5.8.7 => has all my installed Perl modules that I downloaded from CPAN. Comes last in @INC concatination.

Installation Method: ExtUtils::MakeMaker

Restrictions: I cannot touch/modify the original Perl installation. This means that I cannot delete any of the pre-installed Perl modules from the /usr/lpp/perl/lib/5.8.7 directory.

My Problem: This is a generic problem, with this specific example:

  • Test::More 0.54 is installed in /usr/lpp/perl/lib/5.8.7
  • Test::More 0.62 is installed in /usr/lpp/perl/lib/site_perl/5.8.7
  • I want to install Email:Abstract 3.001. When I issue the Makefile.PL command, I get this warning:

"Warning: prerequisite Test::More 0.62 not found. We have 0.54."

  • Test::More 0.54 is found first because its library is concativated first in @INC. MakeMaker does not find Test::More 0.62, because the older version was already found.

Question: Can MakeMaker manage several versions of Perl modules during the install?

This is what I found in MakeMaker documentation (ExtUtils::MakeMaker - Create a module Makefile - search.cpan.org):

"Sometimes older versions of the module you're installing live in other directories in @INC. Because Perl loads the first version of a module it finds, not the newest, you might accidentally get one of these older versions even after installing a brand new version. To delete all other versions of the module you're installing (not simply older ones) set the UNINST variable."

Given my restriction of not deleting anything from /usr/lpp/perl/lib/5.8.7, is there a way to indicate to MakeMaker to search through all @INC directories to find the required versions of a Perl Module?

Any suggestions for a workaround?

Thanks a lot!

Genya

Perl just obeys the ordering imposed by @INC. So, I guess you can get away with it by force prepending '/usr/lpp/perl/lib/site_perl/5.8.7' to @INC while you do "perl Makefile.PL". It does no harm if you have the same path twice in the @INC because Perl just uses the first one.

Try adding -I/usr/lpp/perl/lib/site_perl/5.8.7 to the command and tell us how it goes.

i.e.

perl -I/usr/lpp/perl/lib/site_perl/5.8.7 Makefile.PL