Change 13729 by jhi@alpha on 2001/12/17 17:25:09
Subject: [PATCH] Exporter.pm
From: Nicholas Clark <[EMAIL PROTECTED]>
Date: Sun, 16 Dec 2001 19:24:25 +0000
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
.... //depot/perl/lib/Exporter.pm#22 edit
Differences ...
==== //depot/perl/lib/Exporter.pm#22 (text) ====
Index: perl/lib/Exporter.pm
--- perl/lib/Exporter.pm.~1~ Mon Dec 17 10:30:05 2001
+++ perl/lib/Exporter.pm Mon Dec 17 10:30:05 2001
@@ -1,6 +1,6 @@
package Exporter;
-require 5.001;
+require 5.006;
use strict;
no strict 'refs';
@@ -8,7 +8,7 @@
our $Debug = 0;
our $ExportLevel = 0;
our $Verbose ||= 0;
-our $VERSION = '5.564';
+our $VERSION = '5.565';
$Carp::Internal{Exporter} = 1;
sub export_to_level {
@@ -35,33 +35,33 @@
my $pkg = shift;
my $callpkg = caller($ExportLevel);
- my($exports, $export_cache) = (\@{"$pkg\::EXPORT"},
- \%{"$pkg\::EXPORT"});
# We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
- my($fail) = \@{"$pkg\::EXPORT_FAIL"};
+ my($exports, $export_cache, $fail)
+ = (\@{"$pkg\::EXPORT"}, \%{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
return export $pkg, $callpkg, @_
if $Verbose or $Debug or @$fail > 1;
my $args = @_ or @_ = @$exports;
-
+
+ local $_;
if ($args and not %$export_cache) {
- foreach my $sym (@$exports, @{"$pkg\::EXPORT_OK"}) {
- $sym =~ s/^&//;
- $export_cache->{$sym} = 1;
- }
+ s/^&//, $export_cache->{$_} = 1
+ foreach (@$exports, @{"$pkg\::EXPORT_OK"});
}
- if ($Verbose or $Debug
- or grep {/\W/ or $args and not exists $export_cache->{$_}
- or @$fail and $_ eq $fail->[0]
- or (@{"$pkg\::EXPORT_OK"}
- and $_ eq ${"$pkg\::EXPORT_OK"}[0])} @_) {
- return export $pkg, $callpkg, ($args ? @_ : ());
+ my $heavy = $Verbose || $Debug;
+ unless ($heavy) {
+ # Try very hard not to use {} and hence have to enter scope on the foreach
+ # We bomb out of the loop with last as soon as heavy is set.
+ ($heavy = (/\W/ or $args and not exists $export_cache->{$_}
+ or @$fail and $_ eq $fail->[0]
+ or (@{"$pkg\::EXPORT_OK"} and $_ eq ${"$pkg\::EXPORT_OK"}[0])))
+ and last
+ foreach (@_);
}
+ return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
local $SIG{__WARN__} =
sub {require Carp; &Carp::carp};
- foreach my $sym (@_) {
- # shortcut for the common case of no type character
- *{"$callpkg\::$sym"} = \&{"$pkg\::$sym"};
- }
+ # shortcut for the common case of no type character
+ *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
}
@@ -80,7 +80,7 @@
1;
-
+__END__
=head1 NAME
End of Patch.