our $Debug = 0;
our $ExportLevel = 0;
our $Verbose ||= 0;
-our $VERSION = '5.72';
+our $VERSION = '5.73';
our (%Cache);
sub as_heavy {
package YourModule;
require Exporter;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
+ our @ISA = qw(Exporter);
+ our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
or
package YourModule;
use Exporter 'import'; # gives you Exporter's import() method directly
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
+ our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
In other files which wish to use C<YourModule>:
The symbols must be given by full name with the exception that the
ampersand in front of a function is optional, e.g.
- @EXPORT = qw(afunc $scalar @array); # afunc is a function
- @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
+ our @EXPORT = qw(afunc $scalar @array); # afunc is a function
+ our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
If you are only exporting function names it is recommended to omit the
ampersand, as the implementation is faster this way.
e.g., F<Module.pm> defines:
- @EXPORT = qw(A1 A2 A3 A4 A5);
- @EXPORT_OK = qw(B1 B2 B3 B4 B5);
- %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);
+ our @EXPORT = qw(A1 A2 A3 A4 A5);
+ our @EXPORT_OK = qw(B1 B2 B3 B4 B5);
+ our %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);
Note that you cannot use tags in @EXPORT or @EXPORT_OK.
package A;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw($b);
+ our @ISA = qw(Exporter);
+ our @EXPORT_OK = qw($b);
sub import
{
Instead, say the following:
package A;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw($b);
+ our @ISA = qw(Exporter);
+ our @EXPORT_OK = qw($b);
sub import
{
generating an error. The Exporter will call an export_fail method
with a list of the failed symbols:
- @failed_symbols = $module_name->export_fail(@failed_symbols);
+ our @failed_symbols = $module_name->export_fail(@failed_symbols);
If the C<export_fail> method returns an empty list then no error is
recorded and all the requested symbols are exported. If the returned
C<@EXPORT> or C<@EXPORT_OK>, two utility functions are provided which allow
you to easily add tagged sets of symbols to C<@EXPORT> or C<@EXPORT_OK>:
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
+ our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
Exporter::export_tags('foo'); # add aa, bb and cc to @EXPORT
Exporter::export_ok_tags('bar'); # add aa, cc and dd to @EXPORT_OK
The simplest way to do this is:
- %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
+ our %EXPORT_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);
# add all the other ":class" tags to the ":all" class,
# deleting duplicates
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(munge frobnicate);
-If backward compatibility for Perls under 5.6 is important,
+If backward compatibility for Perls B<under> 5.6 is important,
one must write instead a C<use vars> statement.
use vars qw(@ISA @EXPORT_OK);