Jack J. Woehr is an independent consultant and team mentor practicing in Colorado. He can be contacted at http://www.softwoehr.com/.
Beginning Perl, Second Edition
James Lee, Simon Cozens, and Peter Wainwright
600 pp., $39.99
Beginning Perl, Second Edition, is a Perl 5.6 self-tutorial introductory book gone Perl 5.8. It's a great book for computer-science students and programmers who want to jump into Perl at the intermediate level. Programming beginners may well be baffled: This is not an introduction to computer science itself.
Executive summary: If you're a working coder and don't know Perl, or perhaps want a refresher course (Perl comes upon one in fits, like Lewis Carroll's passion for chess), Beginning Perl is one of the more business-like and thorough-going expositions on the bookshelf, as well as being neatly written and eminently readable.
Breadth of coverage is good in Beginning Perl, running right up through object-oriented Perl and modules. Necessarily concise, the coverage is anything but superficial; rather, it is most nerdly and rich in insights, alternatives, and tips. The final two chapters, by a mysterious, unwritten, but apparently universal law of computer technical publishing, are dedicated to "on beyond," in this instance CGI and DBI.
Beginning Perl is a quality production in both accuracy and layout. The table of contents, source code for the examples, and forums are found online at http://www.apress.com/book/bookDisplay .html?bID=344. Amusingly, the book does not contain this URL, instead referring the reader seeking source code to Apress's home page, which features a search engine incapable of finding the term "Beginning Perl" and that had to be fed the ISBN number to find the book.
The second edition was prepared by James Lee, the competent clean-up batter who brought in the 5.8 coverage. However, experienced programmers may themselves be baffled by the earnest but mumbled and equivocal coverage of Perl 6. Experts among us can sometimes compile and even occasionally run Perl 6 at this writing in early 2005. I've done it myself, submitting patches along the way, and I'm still embarrassed by how much effort it took.
Simon Cozens, fellow TPJ writer, departing master of perl.org, and author of Advanced Perl Programming (soon out in second edition) and something like 70 CPAN modules, was the original author of Beginning Perl. Let's see what he had to say about the new edition of his book:
"I was asked if I would like to write Beginning Perl 2. I said yes. I was then told that the publishers 'would prefer to find an author who can carry revisions of the book from 5.6 to the present and beyond for Perl 6." I said that writing a Perl 6 book at this point was insane, but I took the hint that they were going to be using my first edition but getting another author to update it."
I chatted recently with Simon, who is retiring from Perl (but not from TPJ) and heading off to be an overseas Christian missionary.
TPJ: You seem to sort of validate my thesis that a good liberal arts education is a sound basis for technical pursuits.
Simon Cozens: Hmm, interesting. I think it certainly helps for communicating technical ideas.
TPJ: Are you a C.S. Lewis fan?
SC: I am, yes. I have all his works behind me at the moment.
TPJ: The "hard" stuff too? For example, The Great Divorce, The Problem of Pain, and so forth, one assumes.
TPJ: Lewis definitely was an influence for me. Do you suppose that somehow that sort of influence affects programming style?
SC: Hmm, tricky one. It's certainly not conscious. Maybe there's something about the Oxford tutorial style that both he and I are a product of that leads to particular clarity of logical expression. But I suspect that's overanalyzing; I originally learned to program from my father, who's as much of an engineer as they come.
TPJ: So your Japanese is pretty good?
SC: Yep. That was my first degree. Beginning Perl was written while I was living in Japan.
TPJ: How about Advanced Perl Programming?
SC: Advanced Perl Programming is a complete reworking of the O'Reilly book. It's more of a rewrite than a second edition; I've kept no material [from the original].
TPJ: Are you cutting that loose for your mission or are you going to keep in touch with the publisher via e-mail?
SC: Oh, I'll still be in touch with the editor. We've put the whole thing in Subversion and we're editing it together. But yeah, I do want to clear the decks as soon as I can.
TPJ: So you can become a moth in the flame of metaphysical speculation?
SC: Well, so I can preach to people about something other than Perl for a while.
TPJ: Is this a hiatus or do you really feel you'll not work in coding anymore?
SC: I really am going out to full-time missionary work, so in that sense, I'm never going to be a professional programmer again. I suspect I will end up doing the occasional bits of coding to make things easier for myself or to bring in additional income if support gets tight, but I'm very much permanently phasing out of the open-source community.
TPJ: You're positively Byronic, you know...
SC: It's liberating! And, Larry Wall was going to do it, but didn't make it. So that gets me one up on him.
TPJ: Any last thoughts to hurl over the wall into the Perl community before you fold your tent and vanish into the desert?
SC: I think one failure of mind that people involved in programming can have is to think that the world revolves around their sphere of operation; that, say, everyone in the world ought to care about software patents or programming freedom or good style, or that everyone in programming should be using Perl, or whatever. Programming in Perl becomes an end in itself. What I'm doing is opening the door to the rest of the world out there; if you program in Perl, do it to make that world out there a better place. Perl can be a good tool to sculpt the world with, but don't confuse Perl and the world.
TPJ: Well have a wonderful life, be a blessing to all you meet.
SC: Thanks, I'm sure it's going to be an experience.