X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FAutoLoader.pm;h=be6429e6e832c76b1ab01785298e3709c016900e;hb=743a64fea7e861a13581486312a91a30a446b273;hp=fa9a32244924d5b43b82a445654675ebe7ffaf90;hpb=55497cffdd24c959994f9a8ddd56db8ce85e1c5b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/AutoLoader.pm b/lib/AutoLoader.pm index fa9a322..be6429e 100644 --- a/lib/AutoLoader.pm +++ b/lib/AutoLoader.pm @@ -98,9 +98,22 @@ conflicts when used to split a module. =cut AUTOLOAD { - my $name = "auto/$AUTOLOAD.al"; - # Braces used on the s/// below to preserve $1 et al. - {$name =~ s#::#/#g} + my $name; + # Braces used to preserve $1 et al. + { + my ($pkg,$func) = $AUTOLOAD =~ /(.*)::([^:]+)$/; + $pkg =~ s#::#/#g; + if (defined($name=$INC{"$pkg.pm"})) + { + $name =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#; + $name = undef unless (-r $name); + } + unless (defined $name) + { + $name = "auto/$AUTOLOAD.al"; + $name =~ s#::#/#g; + } + } my $save = $@; eval {require $name}; if ($@) {