The following module was proposed for inclusion in the Module List:
modid: Exporter::VA
DSLIP: Rdphp
description: Improved Exporter with Versioning and Alias
userid: DLUGOSZ (John M. Dlugosz)
chapterid: 2 (Perl_Core_Modules)
communities:
perlmonks.org
similar:
Exporter
rationale:
Exporter::VA.pm is a Perl module that is a replacement for the
traditional Exporter module.
I wanted to rewrite a couple simple modules to make them more
capable, and I also wanted to remove the default exports. After all,
the new way would be object-oriented. It would still have the
function call for compatibility, but we don't want it as a default.
I figured playing around with VERSION and Exporter's export_to_level
would do the trick, but it was not simple. I did in fact redo two
modules, but the compatibility mode stuff stalled me.
Finally, I realized that the remove-default-exports issue should be
a reusable module in itself. After poking around and finding
Exporter lacking, I decided to write an exporter from scratch. I
called it VA for "Versioning and Aliasing", the major features that
distinguish it and provide it's reason for being.
I figued I needed a more general-purpose engine that could export
things (not just named things, but generated things) from a module
to a possibly-different name. Going from a named item to the same
name is simply too restrictive. Generalize it, and anything is
possible. That gave the Alias concept. Then I needed to be able to
specify different definitions for different versions. I thought
about totally different data structures for each version, but
realized that they would have a lot in common and I really only want
to give the changes. The interface to this was the hardest part of
the process.
The concept is pretty open-ended, and it would not do to have
something unruly. Limiting it to versioned names and versioned tags
in a single hash prooved to be workable, and the programmatic
interface is still available for "anything else". It is designed to
be extended, treating the derived class user as another potentional
customer and providing documentation and a proper interface for this
purpose.
I got some valuable feedback and ideas on the Perl Monks site.
Finally, Exporter::VA was the result.
enteredby: DLUGOSZ (John M. Dlugosz)
enteredon: Mon Dec 30 19:26:13 2002 GMT
The resulting entry would be:
Exporter::
::VA Rdphp Improved Exporter with Versioning and Alias DLUGOSZ
Thanks for registering,
The Pause Team
PS: The following links are only valid for module list maintainers:
Registration form with editing capabilities:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=93400000_2bdae4c6cbd42022&SUBMIT_pause99_add_mod_preview=1
Immediate (one click) registration:
https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=93400000_2bdae4c6cbd42022&SUBMIT_pause99_add_mod_insertit=1