summaryrefslogtreecommitdiff
path: root/lib/AutoLoader.pm
diff options
context:
space:
mode:
authorAndy Dougherty <doughera@lafcol.lafayette.edu>1995-06-05 02:03:44 +0000
committerAndy Dougherty <doughera@lafcol.lafayette.edu>1995-06-05 02:03:44 +0000
commitc296029969658ed2c8d9a223d4b09026463ca970 (patch)
treeaa1524c2a7ae100bfbfcb083cf37a7626aeab87b /lib/AutoLoader.pm
parent16d20bd98cd29be76029ebf04027a7edd34d817b (diff)
downloadperl-c296029969658ed2c8d9a223d4b09026463ca970.tar.gz
This is my patch patch.1j for perl5.001.
To apply, change to your perl directory and apply with patch -p1 -N < thispatch. After you apply this patch, I would recommend: rm config.sh sh Configure [whatever options you use] make depend make make test Here are the highlights: Linux fixes: Now correctly sets & uses stdio _ptr and _cnt tricks only when feasible (Configure, config_h.SH, config_H, doio.c, sv.c x2p/str.c) #!path-to-perl fixed to use $binexp instead of $bin. This should really be fixed to do the correct perl start-up stuff. Volunteers? (c2ph.SH, h2ph.SH, h2xs.SH, makeaperl.SH, perldoc.SH, pod/pod2*.SH, x2p/find2perl.SH, x2p/s2p.SH) hint updates: hints/apollo.sh, hints/linux.sh, hints/freebsd.sh, hints/sco_3.sh. xsubpp version 1.7. (includes CASE support) pod/perlbot updates. my lib/AutoLoader patch (to use @INC). [ON]DBM_File/Makefile.PL now have a few hint files. Other sundry small things. Patch and enjoy, Andy Dougherty doughera@lafcol.lafayette.edu Dept. of Physics Lafayette College Easton, PA 18042 Here's the file-by-file breakdown of what's included: Configure Checks if File_ptr(fp) and File_cnt(fp) can be assigned to. Fix typo: s/sytem/system/ MANIFEST Include new extension hint files. README Some clarifications, thanks to John Stoeffel. Tell users how to not use dynamic loading. c2ph.SH Use $binexp instead of $bin. config_H Updated to match config_h.SH. config_h.SH Include defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to. doio.c Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to. ext/DynaLoader/DynaLoader.pm Improve error messages and a little documentation. ext/NDBM_File/hints/solaris.pl New hint file. ext/ODBM_File/Makefile.PL Removed -ldbm.nfs, since it's now in the sco hint file. ext/ODBM_File/hints/sco.pl ext/ODBM_File/hints/solaris.pl ext/ODBM_File/hints/svr4.pl New hint files. h2ph.SH h2xs.SH Use $binexp instead of $bin. hints/apollo.sh hints/freebsd.sh hints/linux.sh hints/sco_3.sh Updated. lib/AutoLoader.pm Eliminate else clause in sub import. Handle case where @INC contains relative paths. lib/ExtUtils/xsubpp Update to version 1.7. This includes CASE support. lib/I18N/Collate.pm Updated documentation. lib/ftp.pl Look for socket.ph or sys/socket.ph lib/getcwd.pl Use defined(). makeaperl.SH Use $binexp instead of $bin. perl.c fputs("\tUnofficial patchlevel 1j.\n",stdout); perldoc.SH Use $binexp instead of $bin. Turn off debugging messages. pod/perlbot.pod Updated. pod/pod2html.SH pod/pod2latex.SH pod/pod2man.SH Use $binexp instead of $bin. sv.c Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to. toke.c Fix spelling of ambiguous. x2p/find2perl.SH x2p/s2p.SH Use $binexp instead of $bin. x2p/str.c Use defines for whether File_ptr(fp) and File_cnt(fp) can be assigned to.
Diffstat (limited to 'lib/AutoLoader.pm')
-rw-r--r--lib/AutoLoader.pm38
1 files changed, 23 insertions, 15 deletions
diff --git a/lib/AutoLoader.pm b/lib/AutoLoader.pm
index 449498c367..b38915872c 100644
--- a/lib/AutoLoader.pm
+++ b/lib/AutoLoader.pm
@@ -43,22 +43,30 @@ AUTOLOAD {
goto &$AUTOLOAD;
}
-sub import
-{
- my ($callclass, $callfile, $callline,$path,$callpack) = caller(0);
- ($callpack = $callclass) =~ s#::#/#;
- if (defined($path = $INC{$callpack . '.pm'}))
- {
- if ($path =~ s#^(.*)$callpack\.pm$#$1auto/$callpack/autosplit.ix# && -e $path)
- {
- eval {require $path};
- carp $@ if ($@);
+sub import {
+ my ($callclass, $callfile, $callline,$path,$callpack) = caller(0);
+ ($callpack = $callclass) =~ s#::#/#;
+ # Try to find the autosplit index file. Eg., if the call package
+ # is POSIX, then $INC{POSIX.pm} is something like
+ # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in
+ # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that.
+ #
+ # However, if @INC is a relative path, this might not work. If,
+ # for example, @INC = ('lib'), then
+ # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require
+ # 'auto/POSIX/autosplit.ix' (without the leading 'lib').
+ #
+ if (defined($path = $INC{$callpack . '.pm'})) {
+ # Try absolute path name.
+ $path =~ s#^(.*)$callpack\.pm$#$1auto/$callpack/autosplit.ix#;
+ eval { require $path; };
+ # If that failed, try relative path with normal @INC searching.
+ if ($@) {
+ $path ="auto/$callpack/autosplit.ix";
+ eval { require $path; };
+ }
+ carp $@ if ($@);
}
- else
- {
- croak "Have not loaded $callpack.pm";
- }
- }
}
1;