1package Exporter;
2
3require 5.006;
4
5# Be lean.
6#use strict;
7#no strict 'refs';
8
9our $Debug = 0;
10our $ExportLevel = 0;
11our $Verbose ||= 0;
12our $VERSION = '5.73';
13our (%Cache);
14
15sub as_heavy {
16  require Exporter::Heavy;
17  # Unfortunately, this does not work if the caller is aliased as *name = \&foo
18  # Thus the need to create a lot of identical subroutines
19  my $c = (caller(1))[3];
20  $c =~ s/.*:://;
21  \&{"Exporter::Heavy::heavy_$c"};
22}
23
24sub export {
25  goto &{as_heavy()};
26}
27
28sub import {
29  my $pkg = shift;
30  my $callpkg = caller($ExportLevel);
31
32  if ($pkg eq "Exporter" and @_ and $_[0] eq "import") {
33    *{$callpkg."::import"} = \&import;
34    return;
35  }
36
37  # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
38  my $exports = \@{"$pkg\::EXPORT"};
39  # But, avoid creating things if they don't exist, which saves a couple of
40  # hundred bytes per package processed.
41  my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"};
42  return export $pkg, $callpkg, @_
43    if $Verbose or $Debug or $fail && @$fail > 1;
44  my $export_cache = ($Cache{$pkg} ||= {});
45  my $args = @_ or @_ = @$exports;
46
47  if ($args and not %$export_cache) {
48    s/^&//, $export_cache->{$_} = 1
49      foreach (@$exports, @{"$pkg\::EXPORT_OK"});
50  }
51  my $heavy;
52  # Try very hard not to use {} and hence have to  enter scope on the foreach
53  # We bomb out of the loop with last as soon as heavy is set.
54  if ($args or $fail) {
55    ($heavy = (/\W/ or $args and not exists $export_cache->{$_}
56               or $fail and @$fail and $_ eq $fail->[0])) and last
57                 foreach (@_);
58  } else {
59    ($heavy = /\W/) and last
60      foreach (@_);
61  }
62  return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy;
63  local $SIG{__WARN__} =
64	sub {require Carp; &Carp::carp} if not $SIG{__WARN__};
65  # shortcut for the common case of no type character
66  *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_;
67}
68
69# Default methods
70
71sub export_fail {
72    my $self = shift;
73    @_;
74}
75
76# Unfortunately, caller(1)[3] "does not work" if the caller is aliased as
77# *name = \&foo.  Thus the need to create a lot of identical subroutines
78# Otherwise we could have aliased them to export().
79
80sub export_to_level {
81  goto &{as_heavy()};
82}
83
84sub export_tags {
85  goto &{as_heavy()};
86}
87
88sub export_ok_tags {
89  goto &{as_heavy()};
90}
91
92sub require_version {
93  goto &{as_heavy()};
94}
95
961;
97__END__
98
99=head1 NAME
100
101Exporter - Implements default import method for modules
102
103=head1 SYNOPSIS
104
105In module F<YourModule.pm>:
106
107  package YourModule;
108  require Exporter;
109  our @ISA = qw(Exporter);
110  our @EXPORT_OK = qw(munge frobnicate);  # symbols to export on request
111
112or
113
114  package YourModule;
115  use Exporter 'import'; # gives you Exporter's import() method directly
116  our @EXPORT_OK = qw(munge frobnicate);  # symbols to export on request
117
118In other files which wish to use C<YourModule>:
119
120  use YourModule qw(frobnicate);      # import listed symbols
121  frobnicate ($left, $right)          # calls YourModule::frobnicate
122
123Take a look at L</Good Practices> for some variants
124you will like to use in modern Perl code.
125
126=head1 DESCRIPTION
127
128The Exporter module implements an C<import> method which allows a module
129to export functions and variables to its users' namespaces.  Many modules
130use Exporter rather than implementing their own C<import> method because
131Exporter provides a highly flexible interface, with an implementation optimised
132for the common case.
133
134Perl automatically calls the C<import> method when processing a
135C<use> statement for a module.  Modules and C<use> are documented
136in L<perlfunc> and L<perlmod>.  Understanding the concept of
137modules and how the C<use> statement operates is important to
138understanding the Exporter.
139
140=head2 How to Export
141
142The arrays C<@EXPORT> and C<@EXPORT_OK> in a module hold lists of
143symbols that are going to be exported into the users name space by
144default, or which they can request to be exported, respectively.  The
145symbols can represent functions, scalars, arrays, hashes, or typeglobs.
146The symbols must be given by full name with the exception that the
147ampersand in front of a function is optional, e.g.
148
149    our @EXPORT    = qw(afunc $scalar @array);   # afunc is a function
150    our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
151
152If you are only exporting function names it is recommended to omit the
153ampersand, as the implementation is faster this way.
154
155=head2 Selecting What to Export
156
157Do B<not> export method names!
158
159Do B<not> export anything else by default without a good reason!
160
161Exports pollute the namespace of the module user.  If you must export
162try to use C<@EXPORT_OK> in preference to C<@EXPORT> and avoid short or
163common symbol names to reduce the risk of name clashes.
164
165Generally anything not exported is still accessible from outside the
166module using the C<YourModule::item_name> (or C<< $blessed_ref->method >>)
167syntax.  By convention you can use a leading underscore on names to
168informally indicate that they are 'internal' and not for public use.
169
170(It is actually possible to get private functions by saying:
171
172  my $subref = sub { ... };
173  $subref->(@args);            # Call it as a function
174  $obj->$subref(@args);        # Use it as a method
175
176However if you use them for methods it is up to you to figure out
177how to make inheritance work.)
178
179As a general rule, if the module is trying to be object oriented
180then export nothing.  If it's just a collection of functions then
181C<@EXPORT_OK> anything but use C<@EXPORT> with caution.  For function and
182method names use barewords in preference to names prefixed with
183ampersands for the export lists.
184
185Other module design guidelines can be found in L<perlmod>.
186
187=head2 How to Import
188
189In other files which wish to use your module there are three basic ways for
190them to load your module and import its symbols:
191
192=over 4
193
194=item C<use YourModule;>
195
196This imports all the symbols from YourModule's C<@EXPORT> into the namespace
197of the C<use> statement.
198
199=item C<use YourModule ();>
200
201This causes perl to load your module but does not import any symbols.
202
203=item C<use YourModule qw(...);>
204
205This imports only the symbols listed by the caller into their namespace.
206All listed symbols must be in your C<@EXPORT> or C<@EXPORT_OK>, else an error
207occurs.  The advanced export features of Exporter are accessed like this,
208but with list entries that are syntactically distinct from symbol names.
209
210=back
211
212Unless you want to use its advanced features, this is probably all you
213need to know to use Exporter.
214
215=head1 Advanced Features
216
217=head2 Specialised Import Lists
218
219If any of the entries in an import list begins with !, : or / then
220the list is treated as a series of specifications which either add to
221or delete from the list of names to import.  They are processed left to
222right. Specifications are in the form:
223
224    [!]name         This name only
225    [!]:DEFAULT     All names in @EXPORT
226    [!]:tag         All names in $EXPORT_TAGS{tag} anonymous array
227    [!]/pattern/    All names in @EXPORT and @EXPORT_OK which match
228
229A leading ! indicates that matching names should be deleted from the
230list of names to import.  If the first specification is a deletion it
231is treated as though preceded by :DEFAULT.  If you just want to import
232extra names in addition to the default set you will still need to
233include :DEFAULT explicitly.
234
235e.g., F<Module.pm> defines:
236
237    our @EXPORT      = qw(A1 A2 A3 A4 A5);
238    our @EXPORT_OK   = qw(B1 B2 B3 B4 B5);
239    our %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);
240
241Note that you cannot use tags in @EXPORT or @EXPORT_OK.
242
243Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK.
244
245An application using Module can say something like:
246
247    use Module qw(:DEFAULT :T2 !B3 A3);
248
249Other examples include:
250
251    use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET);
252    use POSIX  qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/);
253
254Remember that most patterns (using //) will need to be anchored
255with a leading ^, e.g., C</^EXIT/> rather than C</EXIT/>.
256
257You can say C<BEGIN { $Exporter::Verbose=1 }> to see how the
258specifications are being processed and what is actually being imported
259into modules.
260
261=head2 Exporting Without Using Exporter's import Method
262
263Exporter has a special method, 'export_to_level' which is used in situations
264where you can't directly call Exporter's
265import method.  The export_to_level
266method looks like:
267
268    MyPackage->export_to_level(
269	$where_to_export, $package, @what_to_export
270    );
271
272where C<$where_to_export> is an integer telling how far up the calling stack
273to export your symbols, and C<@what_to_export> is an array telling what
274symbols *to* export (usually this is C<@_>).  The C<$package> argument is
275currently unused.
276
277For example, suppose that you have a module, A, which already has an
278import function:
279
280    package A;
281
282    our @ISA = qw(Exporter);
283    our @EXPORT_OK = qw($b);
284
285    sub import
286    {
287	$A::b = 1;     # not a very useful import method
288    }
289
290and you want to Export symbol C<$A::b> back to the module that called
291package A.  Since Exporter relies on the import method to work, via
292inheritance, as it stands Exporter::import() will never get called.
293Instead, say the following:
294
295    package A;
296    our @ISA = qw(Exporter);
297    our @EXPORT_OK = qw($b);
298
299    sub import
300    {
301	$A::b = 1;
302	A->export_to_level(1, @_);
303    }
304
305This will export the symbols one level 'above' the current package - ie: to
306the program or module that used package A.
307
308Note: Be careful not to modify C<@_> at all before you call export_to_level
309- or people using your package will get very unexplained results!
310
311=head2 Exporting Without Inheriting from Exporter
312
313By including Exporter in your C<@ISA> you inherit an Exporter's import() method
314but you also inherit several other helper methods which you probably don't
315want.  To avoid this you can do:
316
317  package YourModule;
318  use Exporter qw(import);
319
320which will export Exporter's own import() method into YourModule.
321Everything will work as before but you won't need to include Exporter in
322C<@YourModule::ISA>.
323
324Note: This feature was introduced in version 5.57
325of Exporter, released with perl 5.8.3.
326
327=head2 Module Version Checking
328
329The Exporter module will convert an attempt to import a number from a
330module into a call to C<< $module_name->VERSION($value) >>.  This can
331be used to validate that the version of the module being used is
332greater than or equal to the required version.
333
334For historical reasons, Exporter supplies a C<require_version> method that
335simply delegates to C<VERSION>.  Originally, before C<UNIVERSAL::VERSION>
336existed, Exporter would call C<require_version>.
337
338Since the C<UNIVERSAL::VERSION> method treats the C<$VERSION> number as
339a simple numeric value it will regard version 1.10 as lower than
3401.9.  For this reason it is strongly recommended that you use numbers
341with at least two decimal places, e.g., 1.09.
342
343=head2 Managing Unknown Symbols
344
345In some situations you may want to prevent certain symbols from being
346exported.  Typically this applies to extensions which have functions
347or constants that may not exist on some systems.
348
349The names of any symbols that cannot be exported should be listed
350in the C<@EXPORT_FAIL> array.
351
352If a module attempts to import any of these symbols the Exporter
353will give the module an opportunity to handle the situation before
354generating an error.  The Exporter will call an export_fail method
355with a list of the failed symbols:
356
357  @failed_symbols = $module_name->export_fail(@failed_symbols);
358
359If the C<export_fail> method returns an empty list then no error is
360recorded and all the requested symbols are exported.  If the returned
361list is not empty then an error is generated for each symbol and the
362export fails.  The Exporter provides a default C<export_fail> method which
363simply returns the list unchanged.
364
365Uses for the C<export_fail> method include giving better error messages
366for some symbols and performing lazy architectural checks (put more
367symbols into C<@EXPORT_FAIL> by default and then take them out if someone
368actually tries to use them and an expensive check shows that they are
369usable on that platform).
370
371=head2 Tag Handling Utility Functions
372
373Since the symbols listed within C<%EXPORT_TAGS> must also appear in either
374C<@EXPORT> or C<@EXPORT_OK>, two utility functions are provided which allow
375you to easily add tagged sets of symbols to C<@EXPORT> or C<@EXPORT_OK>:
376
377  our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
378
379  Exporter::export_tags('foo');     # add aa, bb and cc to @EXPORT
380  Exporter::export_ok_tags('bar');  # add aa, cc and dd to @EXPORT_OK
381
382Any names which are not tags are added to C<@EXPORT> or C<@EXPORT_OK>
383unchanged but will trigger a warning (with C<-w>) to avoid misspelt tags
384names being silently added to C<@EXPORT> or C<@EXPORT_OK>.  Future versions
385may make this a fatal error.
386
387=head2 Generating Combined Tags
388
389If several symbol categories exist in C<%EXPORT_TAGS>, it's usually
390useful to create the utility ":all" to simplify "use" statements.
391
392The simplest way to do this is:
393
394 our  %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
395
396  # add all the other ":class" tags to the ":all" class,
397  # deleting duplicates
398  {
399    my %seen;
400
401    push @{$EXPORT_TAGS{all}},
402      grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
403  }
404
405F<CGI.pm> creates an ":all" tag which contains some (but not really
406all) of its categories.  That could be done with one small
407change:
408
409  # add some of the other ":class" tags to the ":all" class,
410  # deleting duplicates
411  {
412    my %seen;
413
414    push @{$EXPORT_TAGS{all}},
415      grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}}
416        foreach qw/html2 html3 netscape form cgi internal/;
417  }
418
419Note that the tag names in C<%EXPORT_TAGS> don't have the leading ':'.
420
421=head2 C<AUTOLOAD>ed Constants
422
423Many modules make use of C<AUTOLOAD>ing for constant subroutines to
424avoid having to compile and waste memory on rarely used values (see
425L<perlsub> for details on constant subroutines).  Calls to such
426constant subroutines are not optimized away at compile time because
427they can't be checked at compile time for constancy.
428
429Even if a prototype is available at compile time, the body of the
430subroutine is not (it hasn't been C<AUTOLOAD>ed yet).  perl needs to
431examine both the C<()> prototype and the body of a subroutine at
432compile time to detect that it can safely replace calls to that
433subroutine with the constant value.
434
435A workaround for this is to call the constants once in a C<BEGIN> block:
436
437   package My ;
438
439   use Socket ;
440
441   foo( SO_LINGER );  ## SO_LINGER NOT optimized away; called at runtime
442   BEGIN { SO_LINGER }
443   foo( SO_LINGER );  ## SO_LINGER optimized away at compile time.
444
445This forces the C<AUTOLOAD> for C<SO_LINGER> to take place before
446SO_LINGER is encountered later in C<My> package.
447
448If you are writing a package that C<AUTOLOAD>s, consider forcing
449an C<AUTOLOAD> for any constants explicitly imported by other packages
450or which are usually used when your package is C<use>d.
451
452=head1 Good Practices
453
454=head2 Declaring C<@EXPORT_OK> and Friends
455
456When using C<Exporter> with the standard C<strict> and C<warnings>
457pragmas, the C<our> keyword is needed to declare the package
458variables C<@EXPORT_OK>, C<@EXPORT>, C<@ISA>, etc.
459
460  our @ISA = qw(Exporter);
461  our @EXPORT_OK = qw(munge frobnicate);
462
463If backward compatibility for Perls B<under> 5.6 is important,
464one must write instead a C<use vars> statement.
465
466  use vars qw(@ISA @EXPORT_OK);
467  @ISA = qw(Exporter);
468  @EXPORT_OK = qw(munge frobnicate);
469
470=head2 Playing Safe
471
472There are some caveats with the use of runtime statements
473like C<require Exporter> and the assignment to package
474variables, which can be very subtle for the unaware programmer.
475This may happen for instance with mutually recursive
476modules, which are affected by the time the relevant
477constructions are executed.
478
479The ideal (but a bit ugly) way to never have to think
480about that is to use C<BEGIN> blocks.  So the first part
481of the L</SYNOPSIS> code could be rewritten as:
482
483  package YourModule;
484
485  use strict;
486  use warnings;
487
488  our (@ISA, @EXPORT_OK);
489  BEGIN {
490     require Exporter;
491     @ISA = qw(Exporter);
492     @EXPORT_OK = qw(munge frobnicate);  # symbols to export on request
493  }
494
495The C<BEGIN> will assure that the loading of F<Exporter.pm>
496and the assignments to C<@ISA> and C<@EXPORT_OK> happen
497immediately, leaving no room for something to get awry
498or just plain wrong.
499
500With respect to loading C<Exporter> and inheriting, there
501are alternatives with the use of modules like C<base> and C<parent>.
502
503  use base qw(Exporter);
504  # or
505  use parent qw(Exporter);
506
507Any of these statements are nice replacements for
508C<BEGIN { require Exporter; @ISA = qw(Exporter); }>
509with the same compile-time effect.  The basic difference
510is that C<base> code interacts with declared C<fields>
511while C<parent> is a streamlined version of the older
512C<base> code to just establish the IS-A relationship.
513
514For more details, see the documentation and code of
515L<base> and L<parent>.
516
517Another thorough remedy to that runtime
518vs. compile-time trap is to use L<Exporter::Easy>,
519which is a wrapper of Exporter that allows all
520boilerplate code at a single gulp in the
521use statement.
522
523   use Exporter::Easy (
524       OK => [ qw(munge frobnicate) ],
525   );
526   # @ISA setup is automatic
527   # all assignments happen at compile time
528
529=head2 What Not to Export
530
531You have been warned already in L</Selecting What to Export>
532to not export:
533
534=over 4
535
536=item *
537
538method names (because you don't need to
539and that's likely to not do what you want),
540
541=item *
542
543anything by default (because you don't want to surprise your users...
544badly)
545
546=item *
547
548anything you don't need to (because less is more)
549
550=back
551
552There's one more item to add to this list.  Do B<not>
553export variable names.  Just because C<Exporter> lets you
554do that, it does not mean you should.
555
556  @EXPORT_OK = qw($svar @avar %hvar); # DON'T!
557
558Exporting variables is not a good idea.  They can
559change under the hood, provoking horrible
560effects at-a-distance that are too hard to track
561and to fix.  Trust me: they are not worth it.
562
563To provide the capability to set/get class-wide
564settings, it is best instead to provide accessors
565as subroutines or class methods instead.
566
567=head1 SEE ALSO
568
569C<Exporter> is definitely not the only module with
570symbol exporter capabilities.  At CPAN, you may find
571a bunch of them.  Some are lighter.  Some
572provide improved APIs and features.  Pick the one
573that fits your needs.  The following is
574a sample list of such modules.
575
576    Exporter::Easy
577    Exporter::Lite
578    Exporter::Renaming
579    Exporter::Tidy
580    Sub::Exporter / Sub::Installer
581    Perl6::Export / Perl6::Export::Attrs
582
583=head1 LICENSE
584
585This library is free software.  You can redistribute it
586and/or modify it under the same terms as Perl itself.
587
588=cut
589
590
591
592