X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FAutoLoader.pm;h=af33ee80f85e09d23a9bbb6c765ab06710c48147;hb=1cf6bcb82b487d8b46243d2e315539ffa9189b1f;hp=4bbcb33e1051b7d474fc32802c9c74f3371c478b;hpb=146174a91a192983720a158796dc066226ad0e55;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/AutoLoader.pm b/lib/AutoLoader.pm index 4bbcb33..af33ee8 100644 --- a/lib/AutoLoader.pm +++ b/lib/AutoLoader.pm @@ -1,8 +1,10 @@ package AutoLoader; -# use vars qw(@EXPORT @EXPORT_OK $VERSION); +use 5.005_64; +our(@EXPORT, @EXPORT_OK, $VERSION); my $is_dosish; +my $is_epoc; my $is_vms; BEGIN { @@ -10,6 +12,7 @@ BEGIN { @EXPORT = @EXPORT = (); @EXPORT_OK = @EXPORT_OK = qw(AUTOLOAD); $is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32'; + $is_epoc = $^O eq 'epoc'; $is_vms = $^O eq 'VMS'; $VERSION = '5.57'; } @@ -35,7 +38,7 @@ AUTOLOAD { my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/); $pkg =~ s#::#/#g; if (defined($filename = $INC{"$pkg.pm"})) { - $filename =~ s#^(.*)$pkg\.pm$#$1auto/$pkg/$func.al#; + $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s; # if the file exists, then make sure that it is a # a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al', @@ -44,13 +47,17 @@ AUTOLOAD { # looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib'). if (-r $filename) { - unless ($filename =~ m|^/|) { + unless ($filename =~ m|^/|s) { if ($is_dosish) { - unless ($filename =~ m{^([a-z]:)?[\\/]}i) { + unless ($filename =~ m{^([a-z]:)?[\\/]}is) { $filename = "./$filename"; } } - elsif ($is_vms) { + elsif ($is_epoc) { + unless ($filename =~ m{^([a-z?]:)?[\\/]}is) { + $filename = "./$filename"; + } + }elsif ($is_vms) { # XXX todo by VMSmiths $filename = "./$filename"; } @@ -139,6 +146,11 @@ sub import { } } +sub unimport { + my $callpkg = caller; + eval "package $callpkg; sub AUTOLOAD;"; +} + 1; __END__ @@ -258,6 +270,12 @@ the package namespace. Variables pre-declared with this pragma will be visible to any autoloaded routines (but will not be invisible outside the package, unfortunately). +=head2 Not Using AutoLoader + +You can stop using AutoLoader by simply + + no AutoLoader; + =head2 B vs. B The B is similar in purpose to B: both delay the