=head1 NAME

perlbook - Books about and related to Perl

=head1 DESCRIPTION

There are many books on Perl and Perl-related. A few of these are
good, some are OK, but many aren't worth your money. There is a list
of these books, some with extensive reviews, at http://books.perl.org/
. We list some of the books here, and while listing a book implies our
endorsement, don't think that not including a book means anything.

Most of these books are available online through Safari Books Online
( http://safaribooksonline.com/ ).

=head2 The most popular books

The major reference book on Perl, written by the creator of Perl, is
I<Programming Perl>:

=over 4

=item I<Programming Perl> (the "Camel Book"):

	by Larry Wall, Tom Christiansen, and Jon Orwant
	ISBN 978-0-596-00027-1  [3rd edition July 2000]
	http://oreilly.com/catalog/9780596000271/

=back

The Ram is a cookbook with hundreds of examples of using Perl to
accomplish specific tasks:

=over 4

=item I<The Perl Cookbook> (the "Ram Book"):

	by Tom Christiansen and Nathan Torkington,
	    with Foreword by Larry Wall
	ISBN 978-0-596-00313-5 [2nd Edition August 2003]
	http://oreilly.com/catalog/9780596003135/

=back

If you want to learn the basics of Perl, you might start with the
Llama book, which assumes that you already know a little about
programming:

=over 4

=item I<Learning Perl>  (the "Llama Book")

	by Randal L. Schwartz, Tom Phoenix, and brian d foy
	ISBN 978-0-596-52011-3 [5th edition June 2008]
	http://oreilly.com/catalog/9780596520113

=back

The tutorial started in the Llama continues in the Alpaca, which
introduces the intermediate features of references, data structures,
object-oriented programming, and modules:

=over 4

=item I<Intermediate Perl> (the "Alpaca Book")

	by Randal L. Schwartz and brian d foy, with Tom Phoenix
		foreword by Damian Conway
	ISBN 978-0-596-00478-1 [1st edition March 2006]
	http://oreilly.com/catalog/9780596004781/

=back

=head2 References

You might want to keep these desktop references close by your keyboard:

=over 4

=item I<Perl 5 Pocket Reference>

	by Johan Vromans
	ISBN 978-0-596-00374-6 [4th edition July 2002]
	http://oreilly.com/catalog/9780596003746/

=item I<Perl Debugger Pocket Reference>

	by Richard Foley
	ISBN 978-0-596-00503-0 [1st edition January 2004]
	http://oreilly.com/catalog/9780596005030/

=item I<Regular Expression Pocket Reference>

	by Tony Stubblebine
	ISBN 978-0-596-51427-3 [July 2007]
	http://oreilly.com/catalog/9780596514273/

=back

=head2 Tutorials

=over 4

=item I<Beginning Perl>

	by James Lee
	ISBN 1-59059-391-X [3rd edition April 2010]
	http://www.apress.com/9781430227939

=item I<Learning Perl>

	by Randal L. Schwartz, Tom Phoenix, and brian d foy
	ISBN 978-0-596-52010-6 [5th edition June 2008]
	http://oreilly.com/catalog/9780596520106

=item I<Intermediate Perl> (the "Alpaca Book")

	by Randal L. Schwartz and brian d foy, with Tom Phoenix
		foreword by Damian Conway
	ISBN 0-596-10206-2 [1st edition March 2006]
	http://oreilly.com/catalog/9780596102067

=item I<Mastering Perl>

	by brian d foy
	ISBN 978-0-596-10206-7 [1st edition July 2007]
	http://www.oreilly.com/catalog/9780596527242

=item I<Effective Perl Programming>

	by Joseph N. Hall, Joshua A. McAdams, brian d foy
	ISBN 0-321-49694-9 [2nd edition 2010]
	http://www.effectiveperlprogramming.com/

=back

=head2 Task-Oriented

=over 4

=item I<Writing Perl Modules for CPAN>

	by Sam Tregar
	ISBN 1-59059-018-X [1st edition August 2002]
	http://www.apress.com/9781590590188

=item I<The Perl Cookbook>

	by Tom Christiansen and Nathan Torkington
	    with foreword by Larry Wall
	ISBN 1-56592-243-3 [2nd edition August 2003]
	http://oreilly.com/catalog/9780596003135

=item I<Automating System Administration with Perl>

	by David N. Blank-Edelman
	ISBN 978-0-596-00639-6 [2nd edition May 2009]
	http://oreilly.com/catalog/9780596006396

=item I<Real World SQL Server Administration with Perl>

	by Linchi Shea
	ISBN 1-59059-097-X [1st edition July 2003]
	http://www.apress.com/9781590590973

=back

=head2 Special Topics

=over 4

=item I<Regular Expressions Cookbook>

	by Jan Goyvaerts and Steven Levithan
	ISBN 978-0-596-52069-4 [May 2009]
	http://oreilly.com/catalog/9780596520694

=item I<Programming the Perl DBI>

	by Tim Bunce and Alligator Descartes
	ISBN 978-1-56592-699-8 [February 2000]
	http://oreilly.com/catalog/9781565926998

=item I<Perl Best Practices>

	by Damian Conway
	ISBN: 978-0-596-00173-5 [1st edition July 2005]
	http://oreilly.com/catalog/9780596001735

=item I<Higher-Order Perl>

	by Mark-Jason Dominus
	ISBN: 1-55860-701-3 [1st edition March 2005]
	http://hop.perl.plover.com/

=item I<Mastering Regular Expressions>

	by Jeffrey E. F. Friedl
	ISBN 978-0-596-52812-6 [3rd edition August 2006]
	http://oreilly.com/catalog/9780596528126

=item I<Network Programming with Perl>

	by Lincoln Stein
	ISBN 0-201-61571-1 [1st edition 2001]
	http://www.pearsonhighered.com/educator/product/Network-Programming-with-Perl/9780201615715.page

=item I<Perl Template Toolkit>

	by Darren Chamberlain, Dave Cross, and Andy Wardley
	ISBN 978-0-596-00476-7 [December 2003]
	http://oreilly.com/catalog/9780596004767

=item I<Object Oriented Perl>

	by Damian Conway
	    with foreword by Randal L. Schwartz
	ISBN 1-884777-79-1 [1st edition August 1999]
	http://www.manning.com/conway/

=item I<Data Munging with Perl>

	by Dave Cross
	ISBN 1-930110-00-6 [1st edition 2001]
	http://www.manning.com/cross

=item I<Mastering Perl/Tk>

	by Steve Lidie and Nancy Walsh
	ISBN 978-1-56592-716-2 [1st edition January 2002]
	http://oreilly.com/catalog/9781565927162

=item I<Extending and Embedding Perl>

	by Tim Jenness and Simon Cozens
	ISBN 1-930110-82-0 [1st edition August 2002]
	http://www.manning.com/jenness

=item I<Pro Perl Debugging>

	by Richard Foley with Andy Lester
	ISBN 1-59059-454-1 [1st edition July 2005]
	http://www.apress.com/9781590594544

=back

=head2 Free (as in beer) books

Some of these books are available as free downloads.

I<Higher-Order Perl>: http://hop.perl.plover.com/

=head2 Other interesting, non-Perl books

You might notice several familiar Perl concepts in this collection of
ACM columns from Jon Bentley. The similarity to the title of the major
Perl book (which came later) is not completely accidental:

=over 4

=item I<Programming Pearls>

	by Jon Bentley
	ISBN 978-0-201-65788-3 [2 edition, October 1999]

=item I<More Programming Pearls>

	by Jon Bentley
	ISBN 0-201-11889-0 [January 1988]

=back

=head2 A note on freshness

Each version of Perl comes with the documentation that was current at
the time of release. This poses a problem for content such as book
lists. There are probably very nice books published after this list
was included in your Perl release, and you can check the latest
released version at http://perldoc.perl.org/perlbook.html .

Some of the books we've listed appear almost ancient in internet
scale, but we've included those books because they still describe the
current way of doing things. Not everything in Perl changes every day.
Many of the beginner-level books, too, go over basic features and
techniques that are still valid today. In general though, we try to
limit this list to books published in the past five years.

=head2 Get your book listed

If your Perl book isn't listed and you think it should be, let us know.

=cut
