summaryrefslogtreecommitdiff
path: root/lib/Exporter.pm
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2001-12-16 19:24:25 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-12-17 17:25:09 +0000
commit732bb7c2d4f27f710e7a85b7a9f43cd3b492713a (patch)
tree760b3467807c8d6f020c86fef3f498c2afc1eaa1 /lib/Exporter.pm
parentd7341064bc2472128b060451c0da8ce62db49d9d (diff)
downloadperl-732bb7c2d4f27f710e7a85b7a9f43cd3b492713a.tar.gz
Exporter.pm
Message-ID: <20011216192425.R21702@plum.flirble.org> p4raw-id: //depot/perl@13729
Diffstat (limited to 'lib/Exporter.pm')
-rw-r--r--lib/Exporter.pm42
1 files changed, 21 insertions, 21 deletions
diff --git a/lib/Exporter.pm b/lib/Exporter.pm
index 6459312d75..daa78d5641 100644
--- a/lib/Exporter.pm
+++ b/lib/Exporter.pm
@@ -1,6 +1,6 @@
package Exporter;
-require 5.001;
+require 5.006;
use strict;
no strict 'refs';
@@ -8,7 +8,7 @@ no strict 'refs';
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 @@ sub import {
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 @@ sub require_version {
1;
-
+__END__
=head1 NAME