6 AutoLoader - load functions only on demand
13 @ISA = (Exporter, AutoLoader);
17 This module tells its users that functions in the FOOBAR package are to be
18 autoloaded from F<auto/$AUTOLOAD.al>. See L<perlsub/"Autoloading">.
23 my $name = "auto/$AUTOLOAD.al";
27 # The load might just have failed because the filename was too
28 # long for some old SVR3 systems which treat long names as errors.
29 # If we can succesfully truncate a long name then it's worth a go.
30 # There is a slight risk that we could pick up the wrong file here
31 # but autosplit should have warned about that when splitting.
32 if ($name =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){
35 elsif ($AUTOLOAD =~ /::DESTROY$/) {
36 eval "sub $AUTOLOAD {}";
47 my ($callclass, $callfile, $callline,$path,$callpack) = caller(0);
48 ($callpack = $callclass) =~ s#::#/#;
49 # Try to find the autosplit index file. Eg., if the call package
50 # is POSIX, then $INC{POSIX.pm} is something like
51 # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in
52 # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that.
54 # However, if @INC is a relative path, this might not work. If,
55 # for example, @INC = ('lib'), then
56 # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require
57 # 'auto/POSIX/autosplit.ix' (without the leading 'lib').
59 if (defined($path = $INC{$callpack . '.pm'})) {
60 # Try absolute path name.
61 $path =~ s#^(.*)$callpack\.pm$#$1auto/$callpack/autosplit.ix#;
62 eval { require $path; };
63 # If that failed, try relative path with normal @INC searching.
65 $path ="auto/$callpack/autosplit.ix";
66 eval { require $path; };