Add =pod to be tidy.
[p5sagit/p5-mst-13.2.git] / lib / AutoLoader.pm
index 4bbcb33..af33ee8 100644 (file)
@@ -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<AutoLoader> vs. B<SelfLoader>
 
 The B<AutoLoader> is similar in purpose to B<SelfLoader>: both delay the