Perl and Its Community
最后更新于:2022-04-01 03:57:23
# Perl and Its Community
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.
### The CPAN
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/](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:
- the behavior of automated CPAN installers
- metadata to describe what each distribution provides and expects
- machine-readable documentation and licensing
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/](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/](http://search.cpan.org/) and [http://metacpan.org/](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:
~~~
$ cpan
~~~
To install a distribution within the client:
~~~
$ cpan
cpan[1]> 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/](http://learnperl.scratchcomputing.com/tutorials/configuration/) includes a great troubleshooting section.
Even though the CPAN client is a core module for the Perl distribution, you will likely need to install standard development tools such as a `make` utility and possibly a C compiler. Windows users, see Strawberry Perl ([http://strawberryperl.com/](http://strawberryperl.com/)) and Strawberry Perl Professional. Mac OS X users must install XCode. Unix and Unix-like users often have these tools available (though Debian and Ubuntu users should install `build-essential`).
### CPAN Management Tools
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
~~~
The `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](https://metacpan.org/pod/local::lib) and [https://metacpan.org/pod/App::local::lib::helper](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](http://padre.perlide.org/download.html)).
### Community Sites
Perl's homepage at [http://www.perl.org/](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](http://learn.perl.org/faq/beginners.html).
The home of Perl development is [http://dev.perl.org/](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/](http://www.perl.com/).
The CPAN's ([The CPAN](#)) central location is [http://www.cpan.org/](http://www.cpan.org/), though experienced users spend more time on [http://search.cpan.org/](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/](https://metacpan.org/)) is a recent alternative front end to the CPAN.
PerlMonks, at [http://perlmonks.org/](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/](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://perlsphere.net/), [http://planet.perl.org/](http://planet.perl.org/), and [http://ironman.enlightenedperl.org/](http://ironman.enlightenedperl.org/). The latter is part of an initiative from the Enlightened Perl Organization ([http://enlightenedperl.org/](http://enlightenedperl.org/)) to increase the amount and improve the quality of Perl publishing on the web.
Perl Buzz ([http://perlbuzz.com/](http://perlbuzz.com/)) collects and republishes some of the most interesting and useful Perl news on a regular basis. Perl Weekly ([http://perlweekly.com/](http://perlweekly.com/)) offers a weekly take on news from the Perl world.
### Development Sites
Best Practical Solutions ([http://bestpractical.com/](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/](http://rt.cpan.org/). Perl itself has a ticket queue at [http://rt.perl.org/](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](http://lists.cpan.org/showlist.cgi?name=perl5-porters).
The Perl Foundation ([http://www.perlfoundation.org/](http://www.perlfoundation.org/)) hosts a wiki for all things Perl. See [http://www.perlfoundation.org/perl5](http://www.perlfoundation.org/perl5).
Many Perl hackers use Github ([http://github.com/](http://github.com/)) to host their projects ... including the sources of this book at [http://github.com/chromatic/modern_perl_book/](http://github.com/chromatic/modern_perl_book/). See especially Gitpan ([http://github.com/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.
### Events
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/](http://yapc.org/).
The Perl Foundation wiki lists other events at [http://www.perlfoundation.org/perl5/index.cgi?perl_events](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/](http://www.pm.org/).
### IRC
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..