My scripts are able to pull other modules out via $PERL5LIB. "perl -V" shows it at the front of @INC after all. Are core modules different somehow? How can I override? Do I need to install a second (newer) Perl? Is this a Mac-specific thing?
No, core modules (like File::Temp) aren't different, but some pragmas are (strict, warnings ...).
PERL5LIB works as long as the path exists (absolute path), and its readable, and tainting is off.
Example
C:\>dir foolib
Directory of C:\foolib
09/01/2008 11:07 PM <DIR> .
09/01/2008 11:07 PM <DIR> ..
09/01/2008 11:06 PM 53 CGI.pm
1 File(s) 53 bytes
2 Dir(s) 2,536,841,216 bytes free
C:\>cat foolib\CGI.pm
package CGI;
warn "I AM CGI ", __FILE__;
1;
C:\>perl -MCGI -le"print for @INC,%INC"
C:/perl/Perl/lib
C:/perl/Perl/site/lib
.
warnings/register.pm
C:/perl/Perl/lib/warnings/register.pm
Carp.pm
C:/perl/Perl/lib/Carp.pm
vars.pm
C:/perl/Perl/lib/vars.pm
strict.pm
C:/perl/Perl/lib/strict.pm
Exporter.pm
C:/perl/Perl/lib/Exporter.pm
constant.pm
C:/perl/Perl/lib/constant.pm
warnings.pm
C:/perl/Perl/lib/warnings.pm
CGI/Util.pm
C:/perl/Perl/lib/CGI/Util.pm
overload.pm
C:/perl/Perl/lib/overload.pm
CGI.pm
C:/perl/Perl/lib/CGI.pm
C:\>set PERL5LIB=C:\foolib
C:\>perl -MCGI -le"print for @INC,%INC"
I AM CGI C:\foolib/CGI.pm at C:\foolib/CGI.pm line 3.
C:\foolib
C:/perl/Perl/lib
C:/perl/Perl/site/lib
.
CGI.pm
C:\foolib/CGI.pm
C:\>perl -MCGI -Tle"print for @INC,%INC"
C:/perl/Perl/lib
C:/perl/Perl/site/lib
warnings/register.pm
C:/perl/Perl/lib/warnings/register.pm
Carp.pm
C:/perl/Perl/lib/Carp.pm
vars.pm
C:/perl/Perl/lib/vars.pm
strict.pm
C:/perl/Perl/lib/strict.pm
Exporter.pm
C:/perl/Perl/lib/Exporter.pm
constant.pm
C:/perl/Perl/lib/constant.pm
warnings.pm
C:/perl/Perl/lib/warnings.pm
CGI/Util.pm
C:/perl/Perl/lib/CGI/Util.pm
overload.pm
C:/perl/Perl/lib/overload.pm
CGI.pm
C:/perl/Perl/lib/CGI.pm
C:\>perl -Mlib=C:\foolib -MCGI -Tle"print for @INC,%INC"
I AM CGI C:\foolib/CGI.pm at C:\foolib/CGI.pm line 3.
C:\foolib
C:/perl/Perl/lib
C:/perl/Perl/site/lib
strict.pm
C:/perl/Perl/lib/strict.pm
Config.pm
C:/perl/Perl/lib/Config.pm
lib.pm
C:/perl/Perl/lib/lib.pm
CGI.pm
C:\foolib/CGI.pm
C:\>