Exporter::Lite - Lightweight exporting of variables
package Foo; use Exporter::Lite; # Just like Exporter. @EXPORT = qw($This That); @EXPORT_OK = qw(@Left %Right); # Meanwhile, in another piece of code! package Bar; use Foo; # exports $This and &That.
This is an alternative to Exporter intended to provide a lightweight subset of its functionality. It supports import(), @EXPORT and @EXPORT_OK and not a whole lot else.
import()
@EXPORT
@EXPORT_OK
Unlike Exporter, it is not necessary to inherit from Exporter::Lite (ie. no @ISA = qw(Exporter::Lite) mantra). Exporter::Lite simply exports its import() function. This might be called a "mix-in".
@ISA = qw(Exporter::Lite)
Setting up a module to export its variables and functions is simple:
package My::Module; use Exporter::Lite; @EXPORT = qw($Foo bar);
now when you use My::Module, $Foo and bar() will show up.
use My::Module
$Foo
bar()
In order to make exporting optional, use @EXPORT_OK.
package My::Module; use Exporter::Lite; @EXPORT_OK = qw($Foo bar);
when My::Module is used, $Foo and bar() will not show up. You have to ask for them. use My::Module qw($Foo bar).
use My::Module qw($Foo bar)
Export::Lite has one public method, import(), which is called automaticly when your modules is use()'d.
In normal usage you don't have to worry about this at all.
Some::Module->import; Some::Module->import(@symbols);
Works just like Exporter::import() excepting it only honors @Some::Module::EXPORT and @Some::Module::EXPORT_OK.
Exporter::import()
The given @symbols are exported to the current package provided they are in @Some::Module::EXPORT or @Some::Module::EXPORT_OK. Otherwise an exception is thrown (ie. the program dies).
If @symbols is not given, everything in @Some::Module::EXPORT is exported.
Attempted to import a symbol which is not in @EXPORT or @EXPORT_OK.
Attempted to import a symbol of an unknown type (ie. the leading $@% salad wasn't recognized).
Its not yet clear if this is actually any lighter or faster than Exporter. I know its at least on par.
OTOH, the docs are much clearer and not having to say @ISA = qw(Exporter) is kinda nice.
@ISA = qw(Exporter)
Michael G Schwern <schwern@pobox.com>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
Exporter, Exporter::Simple, UNIVERSAL::exports
To install Exporter::Lite, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Exporter::Lite
CPAN shell
perl -MCPAN -e shell install Exporter::Lite
For more information on module installation, please visit the detailed CPAN module installation guide.