Perl's greatest accomplishment is the huge amount of reusable libraries developed for it. Where Perl 4 had forks to connect to databases such as Oracle and Sybase, for example, Perl now has a real extension mechanism. Larry wanted people to create and maintain their own extensions without fragmenting Perl into thousands of incompatible pidgins—and it worked.
That technical accomplishment was almost as important as the growth of a community around Perl. People write libraries. People build on the work of other people. People make a community worth joining and preserving and expanding.
The Perl community is strong and healthy. It welcomes willing participants at all levels, from novices to core developers. Take advantage of the knowledge and experience of countless other Perl programmers, and you'll become a better programmer.
Perl is a pragmatic language, and the availability of tens of thousands of freely reusable Perl libraries demonstrates that pragmatism. If you have a problem to solve, chances are the global Perl community has already written—and shared—code to solve it.
Modern Perl programming makes heavy use of the CPAN (http://www.cpan.org/). The Comprehensive Perl Archive Network is an uploading and mirroring system for redistributable, reusable Perl code. It's one of—if not the—largest archives of libraries of code in the world. The CPAN offers libraries for everything from database access to profiling tools to protocols for almost every network device ever created to sound and graphics libraries and wrappers for shared libraries on your system.
Modern Perl without the CPAN is just another language. Modern Perl with the CPAN is a powerful toolkit for solving problems.
CPAN mirrors distributions, or collections of reusable Perl code. A single distribution can contain one or more modules, or self-contained libraries of Perl code. Each distribution occupies its own CPAN namespace and provides unique metadata.
The CPAN is Big, Really Big
The CPAN adds hundreds of registered contributors and thousands of indexed modules in hundreds of distributions every month. Those numbers do not take into account updates. In January 2014, search.cpan.org reported 11021 uploaders, 129039 modules, and 29068 distributions (representing growth rates of 15.1%, 21.2%, and 18.1% since the previous edition of this book, respectively).
The CPAN itself is merely a mirroring service. Authors upload distributions which get sent to various mirror sites from which CPAN clients download, configure, build, test, and install them. This simplicity has served Perl well, by enabling the contributions of thousands of volunteers. In particular, community standards have evolved to identify the attributes and characteristics of well-formed CPAN distributions. These include:
Additional CPAN services provide comprehensive automated testing and reporting to improve the quality of packaging and correctness across platforms and Perl versions. Every CPAN distribution has its own ticket queue on http://rt.cpan.org/ for reporting bugs and working with authors. CPAN sites also link to previous distribution versions, module ratings, documentation annotations, and more. All of this is available from both http://search.cpan.org/ and http://metacpan.org/.
Modern Perl installations include a client to connect to, search, download, build, test, and install CPAN distributions; this is CPAN.pm. With a recent version (as of this writing, 2.0 is the latest stable release), module installation is reasonably easy. Start the client with:
To install a distribution within the client:
$ cpan cpan> install Modern::Perl
... or to install directly from the command line:
$ cpan Modern::Perl
Eric Wilhelm's tutorial on configuring CPAN.pm http://learnperl.scratchcomputing.com/tutorials/configuration/ includes a great troubleshooting section.
If your operating system provides its own Perl installation, that version may be out of date or it may have its own dependencies on specific versions of CPAN distributions. Serious Perl developers often construct virtual walls between the system Perl and their development Perl installations. Several projects help to make this possible.
App::cpanminus is a newer CPAN client with goals of speed, simplicity, and zero configuration. Install it with
cpan App::cpanminus, or:
$ curl -LO http://xrl.us/cpanm $ less cpanm # review the code before running $ chmod +x cpanm $ ./cpanm
App::perlbrew is a system to manage and to switch between your own installations of multiple versions and configurations of Perl. Installation is as easy as:
$ curl -LO http://xrl.us/perlbrew $ less perlbrew # review the code before running $ chmod +x perlbrew $ ./perlbrew install $ perldoc App::perlbrew
local::lib CPAN distribution allows you to install and to manage distributions in your own user directory, rather than for the system as a whole. This is an effective way to maintain CPAN distributions for individual users without affecting the system as a whole. Installation is somewhat more involved than the previous two distributions, though
App::local::lib::helper can simplify the process. See https://metacpan.org/pod/local::lib and https://metacpan.org/pod/App::local::lib::helper for more details.
All three projects tend to assume a Unix-like environment (such as a GNU/Linux distribution or even Mac OS X). Windows users, see the Padre all-in-one download (http://padre.perlide.org/download.html).
Perl's homepage at http://www.perl.org/ links to Perl documentation, source code, tutorials, mailing lists, and several important community projects. If you're new to Perl, the Perl beginners mailing list is a friendly place to ask novice questions and get accurate and helpful answers. See http://learn.perl.org/faq/beginners.html.
The home of Perl development is http://dev.perl.org/, which links to relevant resources for Perl's core development.
Perl.com publishes articles and tutorials about Perl and its culture. Its archives reach back into the 20th century. See http://www.perl.com/.
The CPAN's (The CPAN) central location is http://www.cpan.org/, though experienced users spend more time on http://search.cpan.org/. This central software distribution hub of reusable, free Perl code is an essential part of the Perl community. MetaCPAN (https://metacpan.org/) is a recent alternative front end to the CPAN.
PerlMonks, at http://perlmonks.org/, is a community site devoted to discussions about Perl programming. Its decade-plus history makes it one of the most venerable question and answer sites for any programming language.
Several community sites offer news and commentary. http://blogs.perl.org/ is a free blog platform open to any Perl community member.
Other sites aggregate the musings of Perl hackers, including http://perlsphere.net/, http://planet.perl.org/, and http://ironman.enlightenedperl.org/. The latter is part of an initiative from the Enlightened Perl Organization (http://enlightenedperl.org/) to increase the amount and improve the quality of Perl publishing on the web.
Perl Buzz (http://perlbuzz.com/) collects and republishes some of the most interesting and useful Perl news on a regular basis. Perl Weekly (http://perlweekly.com/) offers a weekly take on news from the Perl world.
Best Practical Solutions (http://bestpractical.com/) maintains an installation of their popular request tracking system, RT, for CPAN authors as well as Perl development. Every CPAN distribution has its own RT queue on http://rt.cpan.org/. Perl itself has a ticket queue at http://rt.perl.org/.
The Perl 5 Porters (or p5p) mailing list is the focal point of the development of Perl. See http://lists.cpan.org/showlist.cgi?name=perl5-porters.
Many Perl hackers use Github (http://github.com/) to host their projects ... including the sources of this book at http://github.com/chromatic/modern_perl_book/. See especially Gitpan (http://github.com/gitpan/), which hosts Git repositories chronicling the complete history of every distribution on the CPAN.
A Local Git Mirror
GitPAN receives infrequent updates. As an alternative to hacking CPAN distributions from GitPAN, consider using Yanick Champoux's wonderful
Git::CPAN::Patch module to create local Git repositories from CPAN distributions.
The Perl community holds countless conferences, workshops, seminars, and meetings. In particular, the community-run YAPC—Yet Another Perl Conference—is a successful, local, low-cost conference model held on multiple continents. See http://yapc.org/.
The Perl Foundation wiki lists other events at http://www.perlfoundation.org/perl5/index.cgi?perl_events.
Hundreds of local Perl Mongers groups get together frequently for technical talks and social interaction. See http://www.pm.org/.
When Perl mongers can't meet in person, many collaborate and chat online through the textual chat system known as IRC. Many of the most popular and useful Perl projects have their own IRC channels, such as #moose and #catalyst.
The main server for Perl community is irc://irc.perl.org/. Notable channels include #perl-help, for general assistance on Perl programming, and #perl-qa, devoted to testing and other quality issues. Be aware that the channel #perl is a general purpose channel for discussing whatever its participants want to discuss ... and, as such, it's not primarily a helpdesk..