man Exporter::Lite () - Lightweight exporting of variables

NAME

Exporter::Lite - Lightweight exporting of variables

SYNOPSIS

  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.

DESCRIPTION

This is an alternative to Exporter intended to provide a lightweight subset of its functionality. It supports CWimport(), CW@EXPORT and CW@EXPORT_OK and not a whole lot else.

Unlike Exporter, it is not necessary to inherit from Exporter::Lite (ie. no CW@ISA = qw(Exporter::Lite) mantra). Exporter::Lite simply exports its import() function. This might be called a mix-in.

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 CWuse My::Module, CW$Foo and CWbar() will show up.

In order to make exporting optional, use CW@EXPORT_OK.

    package My::Module;
    use Exporter::Lite;

    @EXPORT_OK = qw($Foo bar);

when My::Module is used, CW$Foo and CWbar() will not show up. You have to ask for them. CWuse My::Module qw($Foo bar).

Methods

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.

import
  Some::Module->import;
  Some::Module->import(@symbols);
Works just like CWExporter::import() excepting it only honors CW@Some::Module::EXPORT and CW@Some::Module::EXPORT_OK. The given CW@symbols are exported to the current package provided they are in CW@Some::Module::EXPORT or CW@Some::Module::EXPORT_OK. Otherwise an exception is thrown (ie. the program dies). If CW@symbols is not given, everything in CW@Some::Module::EXPORT is exported.

DIAGNOSTICS

Attempted to import a symbol which is not in CW@EXPORT or CW@EXPORT_OK. Attempted to import a symbol of an unknown type (ie. the leading $@% salad wasn't recognized).

BUGS and CAVEATS

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 CW@ISA = qw(Exporter) is kinda nice.

AUTHORS

Michael G Schwern <schwern@pobox.com>

SEE ALSO

Exporter, UNIVERSAL::exports