Upgrade to Digest 1.01.
[p5sagit/p5-mst-13.2.git] / lib / Exporter.pm
index a986fb3..753ea6a 100644 (file)
@@ -9,7 +9,8 @@ require 5.006;
 our $Debug = 0;
 our $ExportLevel = 0;
 our $Verbose ||= 0;
-our $VERSION = '5.566';
+our $VERSION = '5.567';
+our (%Cache);
 $Carp::Internal{Exporter} = 1;
 
 sub as_heavy {
@@ -30,10 +31,10 @@ sub import {
   my $callpkg = caller($ExportLevel);
 
   # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
-  my($exports, $export_cache, $fail)
-    = (\@{"$pkg\::EXPORT"}, \%{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
+  my($exports, $fail) = (\@{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
   return export $pkg, $callpkg, @_
     if $Verbose or $Debug or @$fail > 1;
+  my $export_cache = ($Cache{$pkg} ||= {});
   my $args = @_ or @_ = @$exports;
 
   local $_;
@@ -247,7 +248,7 @@ Exporter has a special method, 'export_to_level' which is used in situations
 where you can't directly call Exporter's import method. The export_to_level
 method looks like:
 
-MyPackage->export_to_level($where_to_export, $package, @what_to_export);
+    MyPackage->export_to_level($where_to_export, $package, @what_to_export);
 
 where $where_to_export is an integer telling how far up the calling stack
 to export your symbols, and @what_to_export is an array telling what
@@ -257,30 +258,30 @@ currently unused.
 For example, suppose that you have a module, A, which already has an
 import function:
 
-package A;
+    package A;
 
-@ISA = qw(Exporter);
-@EXPORT_OK = qw ($b);
+    @ISA = qw(Exporter);
+    @EXPORT_OK = qw ($b);
 
-sub import
-{
-    $A::b = 1;     # not a very useful import method
-}
+    sub import
+    {
+       $A::b = 1;     # not a very useful import method
+    }
 
 and you want to Export symbol $A::b back to the module that called 
 package A. Since Exporter relies on the import method to work, via 
 inheritance, as it stands Exporter::import() will never get called. 
 Instead, say the following:
 
-package A;
-@ISA = qw(Exporter);
-@EXPORT_OK = qw ($b);
+    package A;
+    @ISA = qw(Exporter);
+    @EXPORT_OK = qw ($b);
 
-sub import
-{
-    $A::b = 1;
-    A->export_to_level(1, @_);
-}
+    sub import
+    {
+       $A::b = 1;
+       A->export_to_level(1, @_);
+    }
 
 This will export the symbols one level 'above' the current package - ie: to 
 the program or module that used package A.