NAME¶
Sub::Exporter::GlobExporter - export shared globs with Sub::Exporter collectors
VERSION¶
version 0.002
SYNOPSIS¶
First, you write something that exports globs:
package Shared::Symbol;
use Sub::Exporter;
use Sub::Exporter::GlobExport qw(glob_exporter);
use Sub::Exporter -setup => {
...
collectors => { '$Symbol' => glob_exporter(Symbol => \'_shared_globref') },
};
sub _shared_globref { return \*Common }
Now other code can import $Symbol and get their *Symbol made an alias to
*Shared::Symbol::Symbol.
If you don't know what this means or why you'd want to do it, you may want to
stop reading now.
The other class can do something like this:
use Shared::Symbol '$Symbol';
print $Symbol; # prints the scalar entry of *Shared::Symbol::Symbol
...or...
use Shared::Symbol '$Symbol' => { -as => 'SharedSymbol' };
print $SharedSymbol; # prints the scalar entry of *Shared::Symbol::Symbol
OVERVIEW¶
Sub::Exporter::GlobExporter provides only one routine,
"glob_exporter", which may be called either by its full name or may
be imported on request.
my $exporter = glob_exporter( $default_name, $globref_locator );
The routine returns a collection validator that will export a glob into the
importing package. It will export it under the name $default_name, unless an
alternate name is given (as shown above). The glob that is installed is
specified by the $globref_locator, which can be either the globref itself, or
a reference to a string which will be called on the exporter
For an example, see the "SYNOPSIS", in which a method is defined to
produce the globref to share. This allows the glob-exporting package to be
subclassed, for for the subclass to choose to re-use the same glob when
exporting or to export a new one.
If there are entries in the arguments to the globref-exporting collector
other than those beginning with a dash, a hashref of them will be
passed to the globref locator. In other words, if we were to write this:
use Shared::Symbol '$Symbol' => { arg => 1, -as => 2 };
It would result in a call like the following:
my $globref = Shared::Symbol->_shared_globref({ arg => 1 });
AUTHOR¶
Ricardo Signes <rjbs@cpan.org>
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2010 by Ricardo Signes.
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.