Extorter
view release on metacpan or search on metacpan
use Extorter qw(
*utf8
*strict
*warnings
feature^say
feature^state
Carp::croak
Carp::confess
Data::Dump::dump
Digest::SHA1::sha1_hex
Digest::SHA1::sha1_base64
Encode::encode_utf8
Encode::decode_utf8
IO::All::io
List::AllUtils::distinct
List::AllUtils::firstval
List::AllUtils::lastval
List::AllUtils::pairs
List::AllUtils::part
List::AllUtils::uniq
Memoize::memoize
Scalar::Util::blessed
Scalar::Util::refaddr
Scalar::Util::reftype
Scalar::Util::weaken
);
DESCRIPTION
The Extorter module allows you to create import lists which extract
routines from the package(s) specified. It will import routines found
in the package variables @EXPORT, @EXPORT_OK and %EXPORT_TAGS, or,
extract routines defined in the package which are not explicitly
exported. Otherwise, as a last resort, Extorter will try to load the
package, using a parameterized use statement, in the event that the
package has a custom or magical importer that does not conform to the
Exporter interface.
Extorter accepts a list of fully-qualified declarations. The verbosity
of the declarations are meant to promote explicit, clean, and
reasonable import lists. Extorter has the added bonus of extracting
functionality from packages which may not have originally been designed
to be imported. Declarations are handled in the order in which they're
declared, which means, as far as the import and/or extraction order
goes, the last routine declared will be the one available to your
program and any redefine warnings will be suppressed. This is a feature
not a bug. NOTE: Any declaration prefixed with an asterisk is assumed
to be a fully-qualified namespace of a package and is imported
directly.
FEATURES AND VERSIONS
Declaring version requirements and version-specific features is handled
a bit differently. As mentioned in the description, any declaration
prefixed with an asterisk is assumed to be a fully-qualified namespace
of a package and is imported directly. This works for modules as well
as pragmas like strict, warnings, utf8, and others. However, this does
not work for declaring a Perl version or version-specific features.
Currently, there is no single declaration which will allow you to
configure Extorter to implement them but the following approach is
equivalent:
use 5.18.0;
The Perl version requirement will be enforced whenever a scope issuing
the use VERSION declaration is found, i.e. as long as you ensure that
declaration is seen, the version requirement will be enforced for your
program. So now we just need to figure out how to import features into
the calling namespace using Extorter. The following approach works
towards that end:
use 5.18.0;
use Extorter 'feature^:5.18';
EXTORTER AND EXPORTER
You can use Extorter with the Exporter module, to create a
sophisticated exporter which implements the Exporter interface. The
following is an example:
package MyApp::Imports;
use Extorter;
use base 'Exporter';
( run in 0.543 second using v1.01-cache-2.11-cpan-39bf76dae61 )