Exporter::Lite - lightweight exporting of functions and variables |
Exporter::Lite - lightweight exporting of functions and variables
package Foo; use Exporter::Lite;
our @EXPORT = qw($This That); # default exports our @EXPORT_OK = qw(@Left %Right); # optional exports
Then in code using the module:
use Foo; # $This and &That are imported here
You have to explicitly ask for optional exports:
use Foo qw/ @Left %Right /;
Exporter::Lite is an alternative to the Exporter manpage,
intended to provide a lightweight subset
of the most commonly-used functionality.
It supports import()
, @EXPORT
and
@EXPORT_OK
and not a whole lot else.
Unlike Exporter, it is not necessary to inherit from Exporter::Lite; Ie you don't need to write:
@ISA = qw(Exporter::Lite);
Exporter::Lite simply exports its import()
function into your namespace.
This might be called a ``mix-in'' or a ``role''.
Setting up a module to export its variables and functions is simple:
package My::Module; use Exporter::Lite;
our @EXPORT = qw($Foo bar);
Functions and variables listed in the @EXPORT
package variable
are automatically exported if you use the module and don't explicitly
list any imports.
Now, when you use My::Module
, $Foo
and bar()
will show up.
Optional exports are listed in the @EXPORT_OK
package variable:
package My::Module; use Exporter::Lite;
our @EXPORT_OK = qw($Foo bar);
When My::Module is used, $Foo
and bar()
will not show up,
unless you explicitly ask for them:
use My::Module qw($Foo bar);
Note that when you specify one or more functions or variables to import, then you must also explicitly list any of the default symbols you want to use. So if you have an exporting module:
package Games; our @EXPORT = qw/ pacman defender /; our @EXPORT_OK = qw/ galaga centipede /;
Then if you want to use both pacman
and galaga
, then you'd write:
use Games qw/ pacman galaga /;
Export::Lite has one public method, import(), which is called automatically 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.
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.
the Exporter manpage is the grandaddy of all Exporter modules, and bundled with Perl itself, unlike the rest of the modules listed here.
the Attribute::Exporter manpage defines attributes which you use to mark which subs and variables you want to export, and how.
the Exporter::Simple manpage also uses attributes to control the export of functions and variables from your module.
the Const::Exporter manpage makes it easy to create a module that exports constants.
the Constant::Exporter manpage is another module that makes it easy to create modules that define and export constants.
the Sub::Exporter manpage is a ``sophisticated exporter for custom-built routines''; it lets you provide generators that can be used to customise what gets imported when someone uses your module.
the Exporter::Tiny manpage provides the same features as the Sub::Exporter manpage, but relying only on core dependencies.
the Exporter::Shiny manpage is a shortcut for the Exporter::Tiny manpage that provides a more concise notation for providing optional exports.
the Exporter::Declare manpage provides syntactic sugar to make the export status of your functions part of their declaration. Kind of.
the AppConfig::Exporter manpage lets you export part of an AppConfig-based configuration.
the Exporter::Lexical manpage lets you export lexical subs from your module.
the Constant::Export::Lazy manpage lets you write a module that exports function-style constants, which are instantiated lazily.
the Exporter::Auto manpage will export everything from your module that it thinks is a public function (name doesn't start with an underscore).
the Class::Exporter manpage lets you export class methods as regular subroutines.
Xporter is like Exporter, but with persistent defaults and auto-ISA.
https://github.com/neilb/Exporter-Lite
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::Lite - lightweight exporting of functions and variables |