package Exporter; require 5.006; # Be lean. #use strict; #no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; our $VERSION = '5.72'; our (%Cache); sub as_heavy { require Exporter::Heavy; # Unfortunately, this does not work if the caller is aliased as *name = \&foo # Thus the need to create a lot of identical subroutines my $c = (caller(1))[3]; $c =~ s/.*:://; \&{"Exporter::Heavy::heavy_$c"}; } sub export { goto &{as_heavy()}; } sub import { my $pkg = shift; my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { *{$callpkg."::import"} = \&import; return; } # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( my $exports = \@{"$pkg\::EXPORT"}; # But, avoid creating things if they don't exist, which saves a couple of # hundred bytes per package processed. my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; return export $pkg, $callpkg, @_ if $Verbose or $Debug or $fail && @$fail > 1; my $export_cache = ($Cache{$pkg} ||= {}); my $args = @_ or @_ = @$exports; if ($args and not %$export_cache) { s/^&//, $export_cache->{$_} = 1 foreach (@$exports, @{"$pkg\::EXPORT_OK"}); } my $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. if ($args or $fail) { ($heavy = (/\W/ or $args and not exists $export_cache->{$_} or $fail and @$fail and $_ eq $fail->[0])) and last foreach (@_); } else { ($heavy = /\W/) and last foreach (@_); } return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; local $SIG{__WARN__} = sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; # shortcut for the common case of no type character *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; } # Default methods sub export_fail { my $self = shift; @_; } # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as # *name = \&foo. Thus the need to create a lot of identical subroutines # Otherwise we could have aliased them to export(). sub export_to_level { goto &{as_heavy()}; } sub export_tags { goto &{as_heavy()}; } sub export_ok_tags { goto &{as_heavy()}; } sub require_version { goto &{as_heavy()}; } 1; __END__
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
App | Folder | 0755 |
|
|
Archive | Folder | 0755 |
|
|
Attribute | Folder | 0755 |
|
|
B | Folder | 0755 |
|
|
CPAN | Folder | 0755 |
|
|
Carp | Folder | 0755 |
|
|
Class | Folder | 0755 |
|
|
Compress | Folder | 0755 |
|
|
Config | Folder | 0755 |
|
|
DBM_Filter | Folder | 0755 |
|
|
Devel | Folder | 0755 |
|
|
Digest | Folder | 0755 |
|
|
Encode | Folder | 0755 |
|
|
Exporter | Folder | 0755 |
|
|
ExtUtils | Folder | 0755 |
|
|
File | Folder | 0755 |
|
|
Filter | Folder | 0755 |
|
|
Getopt | Folder | 0755 |
|
|
HTTP | Folder | 0755 |
|
|
I18N | Folder | 0755 |
|
|
IO | Folder | 0755 |
|
|
IPC | Folder | 0755 |
|
|
JSON | Folder | 0755 |
|
|
Locale | Folder | 0755 |
|
|
Math | Folder | 0755 |
|
|
Memoize | Folder | 0755 |
|
|
Module | Folder | 0755 |
|
|
Net | Folder | 0755 |
|
|
Params | Folder | 0755 |
|
|
Parse | Folder | 0755 |
|
|
Perl | Folder | 0755 |
|
|
PerlIO | Folder | 0755 |
|
|
Pod | Folder | 0755 |
|
|
Search | Folder | 0755 |
|
|
TAP | Folder | 0755 |
|
|
Term | Folder | 0755 |
|
|
Test | Folder | 0755 |
|
|
Test2 | Folder | 0755 |
|
|
Text | Folder | 0755 |
|
|
Thread | Folder | 0755 |
|
|
Tie | Folder | 0755 |
|
|
Time | Folder | 0755 |
|
|
Unicode | Folder | 0755 |
|
|
User | Folder | 0755 |
|
|
autodie | Folder | 0755 |
|
|
encoding | Folder | 0755 |
|
|
overload | Folder | 0755 |
|
|
pod | Folder | 0755 |
|
|
unicore | Folder | 0755 |
|
|
version | Folder | 0755 |
|
|
warnings | Folder | 0755 |
|
|
AnyDBM_File.pm | File | 2.56 KB | 0644 |
|
AutoLoader.pm | File | 5.36 KB | 0644 |
|
AutoSplit.pm | File | 19.18 KB | 0644 |
|
Benchmark.pm | File | 30.3 KB | 0644 |
|
CORE.pod | File | 3.11 KB | 0644 |
|
CPAN.pm | File | 138.12 KB | 0644 |
|
Carp.pm | File | 19.68 KB | 0644 |
|
DB.pm | File | 18.48 KB | 0644 |
|
DBM_Filter.pm | File | 14.05 KB | 0644 |
|
Digest.pm | File | 10.45 KB | 0644 |
|
DirHandle.pm | File | 1.52 KB | 0644 |
|
Dumpvalue.pm | File | 17.14 KB | 0644 |
|
English.pm | File | 4.65 KB | 0644 |
|
Env.pm | File | 5.39 KB | 0644 |
|
Exporter.pm | File | 2.31 KB | 0644 |
|
Fatal.pm | File | 56.91 KB | 0644 |
|
FileCache.pm | File | 5.44 KB | 0644 |
|
FileHandle.pm | File | 2.06 KB | 0644 |
|
FindBin.pm | File | 4.45 KB | 0644 |
|
Internals.pod | File | 2.52 KB | 0644 |
|
Memoize.pm | File | 35.34 KB | 0644 |
|
NEXT.pm | File | 18.4 KB | 0644 |
|
PerlIO.pm | File | 10.21 KB | 0644 |
|
Safe.pm | File | 24.49 KB | 0644 |
|
SelectSaver.pm | File | 344 B | 0644 |
|
SelfLoader.pm | File | 17.28 KB | 0644 |
|
Symbol.pm | File | 2.05 KB | 0644 |
|
Test.pm | File | 29.35 KB | 0644 |
|
Test2.pm | File | 6.24 KB | 0644 |
|
Thread.pm | File | 8.09 KB | 0644 |
|
UNIVERSAL.pm | File | 6.44 KB | 0644 |
|
XSLoader.pm | File | 3.83 KB | 0644 |
|
_charnames.pm | File | 32.39 KB | 0644 |
|
autodie.pm | File | 12.58 KB | 0644 |
|
autouse.pm | File | 4.14 KB | 0644 |
|
base.pm | File | 8.72 KB | 0644 |
|
bigint.pm | File | 22.85 KB | 0644 |
|
bignum.pm | File | 20.64 KB | 0644 |
|
bigrat.pm | File | 15.78 KB | 0644 |
|
blib.pm | File | 2.04 KB | 0644 |
|
bytes.pm | File | 447 B | 0644 |
|
bytes_heavy.pl | File | 758 B | 0644 |
|
charnames.pm | File | 20.38 KB | 0644 |
|
constant.pm | File | 5.6 KB | 0644 |
|
deprecate.pm | File | 3.43 KB | 0644 |
|
diagnostics.pm | File | 18.59 KB | 0644 |
|
dumpvar.pl | File | 15.19 KB | 0644 |
|
experimental.pm | File | 5.66 KB | 0644 |
|
feature.pm | File | 4.39 KB | 0644 |
|
fields.pm | File | 4.9 KB | 0644 |
|
filetest.pm | File | 3.91 KB | 0644 |
|
if.pm | File | 3.26 KB | 0644 |
|
integer.pm | File | 172 B | 0644 |
|
less.pm | File | 3.13 KB | 0644 |
|
locale.pm | File | 3.34 KB | 0644 |
|
meta_notation.pm | File | 2.07 KB | 0644 |
|
ok.pm | File | 967 B | 0644 |
|
open.pm | File | 7.83 KB | 0644 |
|
overload.pm | File | 4.34 KB | 0644 |
|
overloading.pm | File | 964 B | 0644 |
|
parent.pm | File | 478 B | 0644 |
|
perl5db.pl | File | 309.01 KB | 0644 |
|
perlfaq.pm | File | 78 B | 0644 |
|
sigtrap.pm | File | 7.43 KB | 0644 |
|
sort.pm | File | 5.94 KB | 0644 |
|
strict.pm | File | 1.57 KB | 0644 |
|
subs.pm | File | 848 B | 0644 |
|
utf8.pm | File | 342 B | 0644 |
|
utf8_heavy.pl | File | 30.87 KB | 0644 |
|
vars.pm | File | 1.12 KB | 0644 |
|
version.pm | File | 1.67 KB | 0644 |
|
version.pod | File | 9.63 KB | 0644 |
|
vmsish.pm | File | 4.21 KB | 0644 |
|
warnings.pm | File | 21.44 KB | 0644 |
|