New Skool Constants
package NewSkool::Constants; use strict; use warnings; use base 'Badger::Exporter'; use constant { MESSAGE => 'Hello World!', VOLUME => 11, TRUE => 1, FALSE => 0, }; our $VERSION = 2; our $EXPORT_ALL = 'MESSAGE'; our $EXPORT_ANY = 'TRUE FALSE VOLUME'; our $EXPORT_TAGS = { truth => 'TRUE FALSE' }
Thus Spake Andy:
The Badger::Exporter
version is more-or-less the same as the previous
example with just a few name changes. This time you're subclassing from
Badger::Exporter
instead of Exporter
and you set $EXPORT_ALL
,
$EXPORT_ANY
and $EXPORT_TAGS
($EXPORT_HOOKS
and $EXPORT_FAIL
are also
available). We use different variables from Exporter
to avoid any potential
clashes with modules that aren't expecting to be used in an OO fashion. We use
scalar variables because... and here comes the science bit... scalar variables
in Perl are polymorphic. What that means in practice is that a scalar variable
can hold a simple string, or a reference to a list, hash array, subroutine, or
something else. We can let the coder choose whatever is best for them (e.g. a
simple string for the simple cases, a hash or list ref for more complex stuff)
and leave it to Badger to Do The Right Thing™.