A.1
Perl
The
documentation
for Perl
is extensive. It includes lists of FAQs (Frequently Asked Questions,
with answers), tutorials, precise definitions in the form of
Unix-style manpages, and discussions of specific areas. There are
various web sites, a well-organized storehouse of useful Perl
programs called CPAN, newsgroups that have searchable archives,
conferences, and many good books. It's also worth your while to
find and cultivate your own local Perl community. Don't be
afraid to engage your colleagues, though as your programming skills
grow, they're liable to start asking you questions!
As I've mentioned before, Perl is free. It's part of the
wider open source movement, which includes such developments as
Linux, the Apache web server, and so on. Since Perl is free, it
relies on a community of interested parties to develop code and to
write documentation. Because of this, you may notice that a lot of
the documentation is a bit fragmented (or, in some cases, very
fragmented). Still, the level of support for all these projects
equals that available for the best of the commercial software
packages.
A.1.1
Web Site
-
http://www.perl.com
-
This is the starting point
for all things Perl. By all means, explore it. From here,
you'll find many more sites dedicated to various aspects of
Perl programming. Among several, you might find http://www.perl.org especially useful.
A.1.2
CPAN: Comprehensive Perl Archive Network
http://www.cpan.org/
The
Comprehensive Perl
Archive Network is an important resource and is
the place to look for Perl modules. It's
also a repository for other software, documentation, and web links.
Before taking the time to write a program yourself, look here first
to see if it has already been written.
A.1.3
FAQs: Frequently Asked Questions
-
http://www.perl.com/pub/v/faqs
-
FAQs
are a compendium of the most common questions newcomers ask, along
with answers, that are usually quite helpful. As a beginning
programmer, it is a good idea to take the time to read the Perl
FAQs—skimming as necessary—in order to get the lay of the
land.
You should spend at least enough time reading them to get an idea of
what sorts of questions are archived in the FAQs. Be sure to check
the FAQs before asking for help from a local expert or posting to a
newsgroup. Repeatedly asking questions that have already been
exhaustively answered in the FAQs, especially on the Perl newsgroups,
might be considered irritating.
You'll find that the Perl FAQs are divided into several parts.
When consulting FAQs, look for the date when they were last updated;
this isn't a big problem with Perl, but in general, you can
find lots of out-of-date information on the Web.
A.1.3.1
Beginners
There are
several documents aimed at beginners in the
FAQs and in the documentation. There are some other beginning books
besides this one, mentioned elsewhere in this appendix. There are
also some online tutorials and beginners' articles about Perl
at http://learn.perl.org (this is
new as I write but looks very promising). There are also a number of
mailing lists you can subscribe to,
including a mailing list called beginners@perl.org, which you can subscribe
to by visiting http://lists.perl.org.
A.1.4
Online Manuals
-
http://www.perl.com/pub/v/documentation
-
The
Perl manual is available online at the Perl
web site mentioned earlier. It should also be installed on your
computer. You can access it by typing perldoc
perl. On Unix/Linux systems, you can also type
man perl to get the beginning
manpage. As that explains, the manual is split into several pages.
For instance, to find the manual for Perl's
built-in functions, type
man perlfunc or
perldoc. HTML versions of the manual exist, and
they can be installed on your local computer. This is my preferred
method of accessing the documentation: it gives you links that make
navigating easier, and if it's installed locally, you can use
it even when you're not connected to the Internet.
A.1.5
Books
There are lots of Perl books. Many of them are excellent; some are
not. Here's a short list of the Perl books I've found
most useful in my own work.
Programming Perl, Third
Edition; by Larry Wall, Tom Christiansen, and Jon Orwant;
O'Reilly & Associates. This is the standard book on Perl by
the creator of the language. It explains pretty much everything,
although it can lag behind the latest version of Perl. So the
absolute authority for your installation should be the online
manuals. Programming Perl covers a lot of
ground; it's good as a reference, a tutorial, and as a ripping
yarn if you're into that sort of thing. It presents some of the
philosophy behind the language, so it's a good way to absorb
some of the computer-science mindset. Earlier editions, if you happen
to have them, will also serve; I'm particularly fond of the
first edition.
Perl Cookbook, by Tom Christiansen and Nathan
Torkington, O'Reilly & Associates. This is billed as the
companion volume to Programming Perl, and so it
is. Here, you will find examples that use Perl for different tasks.
It's a great help in many situations, and if you will be doing
much Perl programming, it's worth taking at least a few hours
to peruse it.
Mastering Algorithms with Perl; by Jon Orwant,
Jarkho Hietaniemi, and John Macdonald; O'Reilly &
Associates. I've mentioned the importance of studying
algorithms and this fine book presents many important algorithms in
the context of Perl. It explains concepts and gives code; it
doesn't, however, teach the mathematics of analyzing and
measuring algorithms. Really serious algorithms students will find
that information in texts such as Introduction to
Algorithms by Corman, Leiserson, and Rivest. Even if
you're a novice programmer, this is still a valuable book, and
you'll find lots of code you'll be able to use.
Mastering Regular Expressions; by Jeffrey R.
Friedl, O'Reilly & Associates. A good book on an important
topic with excellent coverage of Perl.
Elements of Programming in Perl, by Andrew L.
Johnson, Manning Publications. This is another book intended for
beginners. It's very good, and I recommend it as a supplement
to this text.
Learning Perl, Third Edition; by Randall L.
Schwartz and Tom Christiansen; O'Reilly & Associates. This
is the classic tutorial book on Perl. It's well-written and
well-organized. If you've gotten through Beginning
Perl for Bioinformatics, you should have no trouble with
Learning Perl.
Object-Oriented Perl, by Damian Conway, Manning
Publications. A superb book on the topic suitable for the beginning
or advanced programmer.
A.1.6
Conference
O'Reilly Open Source Convention. This
convention now includes the yearly Perl
Conference. It's a chance to attend classes and lectures and
meet Perl practitioners of all sorts. There are also regular YAPC
(yet another Perl conference) meetings; you'll find the details
at the main Perl web site.
A.1.7
Newsgroups
Perl newsgroups are an important resource for
programmers. If you've never seen them, they're
accessible over the Web (among other ways). They give you the ability
to write a message to a large group of people with interests in any
of hundreds of specific topics. If you have a question that you
haven't been able to answer in the Perl documentation or the
FAQs, searching the newsgroups for the topic of your question can
often result in an answer. You can also post a question to a
newsgroup if you can't find an answer already provided: but
this is not often necessary.
I want to emphasize how useful this resource is. The drawback is that
there tends to be a "low signal-to-noise ratio": in
other words, there's often a lot of uninformative material in
newsgroups. But it can be worth wading through; even negative
responses (no known solution to the problem) can save you time and
effort.
There are a number of newsgroups related to Perl in the comp.lang.perl hierarchy. The search
engine deja.com (recently
sold to google.com but still
available) lets you search the archives of these newsgroups. More
information is available in the Perl FAQs about specific newsgroups;
for instance, many specific Perl modules have their own newsgroups,
mailing lists, or web sites. The CPAN web site is another place to
find searchable newsgroup archives.