# phpman > info > Exporter::Lite

Exporter::[Lite(3pm)](https://www.chedong.com/phpMan.php/man/Lite/3pm/markdown)   User Contributed Perl Documentation  Exporter::[Lite(3pm)](https://www.chedong.com/phpMan.php/man/Lite/3pm/markdown)

NAME
       [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown) - lightweight exporting of functions and variables

SYNOPSIS
         package Foo;
         use [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown);

         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 /;

DESCRIPTION
       [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown) is an alternative to Exporter, 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](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown); Ie
       you don't need to write:

        @ISA = qw([Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown));

       [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/My%3A%3AModule/markdown);
           use [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown);

           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](https://www.chedong.com/phpMan.php/perldoc/My%3A%3AModule/markdown)", $Foo and "bar()" will
       show up.

       Optional exports are listed in the @EXPORT_OK package variable:

           package [My::Module](https://www.chedong.com/phpMan.php/perldoc/My%3A%3AModule/markdown);
           use [Exporter::Lite](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALite/markdown);

           our @EXPORT_OK = qw($Foo bar);

       When [My::Module](https://www.chedong.com/phpMan.php/perldoc/My%3A%3AModule/markdown) is used, $Foo and "bar()" will not show up, unless you
       explicitly ask for them:

           use [My::Module](https://www.chedong.com/phpMan.php/perldoc/My%3A%3AModule/markdown) 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 /;

Methods
       [Export::Lite](https://www.chedong.com/phpMan.php/perldoc/Export%3A%3ALite/markdown) 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.

       import
             [Some::Module](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule/markdown)->import;
             [Some::Module](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule/markdown)->import(@symbols);

           Works just like "[Exporter::import](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3Aimport/markdown)()" excepting it only honors
           @[Some::Module::EXPORT](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule%3A%3AEXPORT/markdown) and @[Some::Module::EXPORT_OK](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule%3A%3AEXPORTOK/markdown).

           The given @symbols are exported to the current package provided
           they are in @[Some::Module::EXPORT](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule%3A%3AEXPORT/markdown) or @[Some::Module::EXPORT_OK](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule%3A%3AEXPORTOK/markdown).
           Otherwise an exception is thrown (ie. the program dies).

           If @symbols is not given, everything in @[Some::Module::EXPORT](https://www.chedong.com/phpMan.php/perldoc/Some%3A%3AModule%3A%3AEXPORT/markdown) is
           exported.

DIAGNOSTICS
       '"%s" is not exported by the %s module'
           Attempted to import a symbol which is not in @EXPORT or @EXPORT_OK.

       'Can\'t export symbol: %s'
           Attempted to import a symbol of an unknown type (ie. the leading
           $@% salad wasn't recognized).

SEE ALSO
       Exporter is the grandaddy of all Exporter modules, and bundled with
       Perl itself, unlike the rest of the modules listed here.

       [Attribute::Exporter](https://www.chedong.com/phpMan.php/perldoc/Attribute%3A%3AExporter/markdown) defines attributes which you use to mark which subs
       and variables you want to export, and how.

       [Exporter::Simple](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ASimple/markdown) also uses attributes to control the export of
       functions and variables from your module.

       [Const::Exporter](https://www.chedong.com/phpMan.php/perldoc/Const%3A%3AExporter/markdown) makes it easy to create a module that exports
       constants.

       [Constant::Exporter](https://www.chedong.com/phpMan.php/perldoc/Constant%3A%3AExporter/markdown) is another module that makes it easy to create
       modules that define and export constants.

       [Sub::Exporter](https://www.chedong.com/phpMan.php/perldoc/Sub%3A%3AExporter/markdown) 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.

       [Exporter::Tiny](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ATiny/markdown) provides the same features as [Sub::Exporter](https://www.chedong.com/phpMan.php/perldoc/Sub%3A%3AExporter/markdown), but relying
       only on core dependencies.

       [Exporter::Shiny](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3AShiny/markdown) is a shortcut for [Exporter::Tiny](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ATiny/markdown) that provides a more
       concise notation for providing optional exports.

       [Exporter::Declare](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ADeclare/markdown) provides syntactic sugar to make the export status of
       your functions part of their declaration. Kind of.

       [AppConfig::Exporter](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AExporter/markdown) lets you export part of an AppConfig-based
       configuration.

       [Exporter::Lexical](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3ALexical/markdown) lets you export lexical subs from your module.

       [Constant::Export::Lazy](https://www.chedong.com/phpMan.php/perldoc/Constant%3A%3AExport%3A%3ALazy/markdown) lets you write a module that exports function-
       style constants, which are instantiated lazily.

       [Exporter::Auto](https://www.chedong.com/phpMan.php/perldoc/Exporter%3A%3AAuto/markdown) will export everything from your module that it thinks
       is a public function (name doesn't start with an underscore).

       [Class::Exporter](https://www.chedong.com/phpMan.php/perldoc/Class%3A%3AExporter/markdown) lets you export class methods as regular subroutines.

       Xporter is like Exporter, but with persistent defaults and auto-ISA.

REPOSITORY
       <<https://github.com/neilb/Exporter-Lite>>

AUTHORS
       Michael G Schwern <<schwern@pobox.com>>

LICENSE
       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>

perl v5.22.1                      2016-01-16               Exporter::[Lite(3pm)](https://www.chedong.com/phpMan.php/man/Lite/3pm/markdown)
