NAME perl5 - Use a Perl 5 group of modules/features SYNOPSIS Use a version of Perl and its feature set: use perl5; # Same as 'use perl5 v5.10.0;' use perl5 v14.1; use perl5 14.1; use perl5-14.1; Use a bundled feature set from a "perl5" plugin: use perl5-i; use perl5-2i; use perl5-modern; use perl5-yourShinyPlugin; Or both: use perl5 v14.1 -shiny; DESCRIPTION The "perl5" module lets you "use" a well known set of modules in one command. It allows people to create plugins like "perl5::foo" and "perl5::bar" that are sets of useful modules that have been tested together and are known to create joy. This module, "perl5", is generally the base class to such a plugin. USAGE This: use perl5-foo; Is equivalent in Perl to: use perl5 '-foo'; The "perl5" module takes the first argument in the "use" command, and uses it to find a plugin, like "perl5::foo" in this case. "perl5::foo" is typically just a subclass of perl5. It invokes a set of modules for its caller. If you use it with a version, like this: use perl5 v14; It is the same as saying: use v5.14; use strict; use warnings; use feature ':5.14'; If you use "perl5" with no arguments, like this: use perl5; It is the same as saying: use perl5 v10; PLUGIN API This module uses lexically-wrapped-goto-chaining-magic to correctly load a set of modules (including optional version requirements and import options) into the user's code. The API for specifying a perl5 plugin is very simple. To create a plugin called "perl5::foo" that gets called like this: use perl5-foo; Write some code like this: package perl5::foo; use base 'perl5'; our $VERSION = 0.12; # These is the list of modules (with optional version and arguments) sub imports { return ( strict => warnings => features => [':5.10'], SomeModule => 0.22, OtherModule => 0.33, [option1 => 2], Module => [], # Don't invoke Module's import() method ); } 1; INSPIRATION This module was inspired by Michael Schwern's perl5i, and the talk he gave about it at the 2010 OSDC in Melbourne. By "inspired" I mean that I was perturbed by Schwern's non-TMTOWTDI attitude towards choosing a standard set of Perl modules for all of us. THIS IS PERL! THERE ARE NO STANDARDS! ...and I told him so. I also promised that I would show him my feelings in code. Schwern, *this* is how I feel! (See also: perl5::i) THANKS Special thanks to schwern, mstrout, audreyt, rodrigo and jesse for ideas and support. SEE ALSO * perl5i * perl5::i * perl5::ingy AUTHOR Ingy döt Net COPYRIGHT AND LICENSE Copyright (c) 2011. Ingy döt Net. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html