NAME
Exporter::Easy - Takes the drudgery out of Exporting symbols
SYNOPSIS
In module YourModule.pm:
package
YourModule;
use
Exporter::Easy (
OK
=> [
'munge'
,
'frobnicate'
]
# symbols to export on request
);
In other files which wish to use YourModule:
frobnicate (
$left
,
$right
)
# calls YourModule::frobnicate
DESCRIPTION
The Exporter::Easy module is a wrapper around Exporter. In it's simplest case it allows you to drop the boilerplate code that comes with using Exporter, so
becomes
and more complicated situations where you use tags to build lists and more tags become easy, like this
use
Exporter (
EXPORT
=> [
qw( init :base )
],
TAGS
=> [
base
=> [
qw( open close )
],
read
=> [
qw( read sysread readline )
],
write
=> [
qw( print write writeline )
],
misc
=> [
qw( select flush )
],
all
=> [
qw( :base :read :write :misc)
],
no_misc
=> [
qw( :all !:misc )
],
],
OK
=> [
qw( some other stuff )
],
);
All it does is set up @EXPORT
, @EXPORT_OK
, @EXPORT_FAIL
and %EXPORT_TAGS
in the current package and add Exporter to that packages @ISA
. The rest is handled as normal by Exporter.
HOW TO USE IT
Put
In your package. Arguments are passes as key-value pairs, the following keys are available
- EXPORT
-
The value should be a reference to a list of symbol names and tags. Any tags will be expanded and the resulting list of symbol names will be placed in the
@EXPORT
array in your package. - FAIL
-
The value should be a reference to a list of symbol names and tags. The tags will be expanded and the resulting list of symbol names will be placed in the
@EXPORT_FAIL
array in your package. They will also be removed from the@EXPORT_OK
list. - TAGS
-
The value should be a reference to a list that goes like (TAG_NAME, TAG_VALUE, TAG_NAME, TAG_VALUE, ...), where TAG_NAME is a string and TAG_VALUE is a reference to an array of symbols and tags. For example
TAGS
=> [
file
=> [
'open'
,
'close'
,
'read'
,
'write'
],
string
=> [
'length'
,
'substr'
,
'chomp'
],
hash
=> [
'keys'
,
'values'
,
'each'
],
all
=> [
':file'
,
':string'
,
':hash'
],
some
=> [
':all'
,
'!open'
,
':hash'
],
]
This is used to fill the
%EXPORT_TAGS
in your package. You can build tags from other tags - in the example above the tagall
will contain all the symbols fromfile
,string
andhash
. You can also subtract symbols and tags - in the example above,some
contains the symbols from all but withopen
removed and all the symbols fromhash
removed.The rule is that any symbol starting with a ':' is taken to be a tag which has been defined previously (if it's not defined you'll get an error). If a symbol is preceded by a '!' it will be subtracted from the list, otherwise it is added.
If you try to redefine a tag you will also get an error.
All the symbols which occur while building the tags are automatically added your package's
@EXPORT_OK
array. - OK
-
The value should be a reference to a list of symbols names. These symbols will be added to the
@EXPORT_OK
array in your package. - ALL
-
The value should be the name of tag that doesn't yet exist. This tag will contain a list of all symbols which can be exported.
SEE ALSO
For details on what all these arrays and hashes actually do, see the Exporter documentation.
AUTHOR
Written by Fergal Daly <fergal@esatclear.ie>.
LICENSE
Under the same license as Perl itself