http://www.perlmonks.org?node_id=216772

Item Description: An introduction to Perl for non-programmers by Simon Cozens

Review Synopsis:

If you were asked to name some publishers of Perl books, Wrox wouldn't be the first name that springs to mind. There's O'Reilly, of course, and you could add Manning and Addison Wesley to the list. But Wrox? The author of Beginning Perl, Simon Cozens, is, on the other hand, a noted Perl hacker who is currently involved in the development of Perl 6. As a relative newcomer to the language, the main question on my mind as I began reading this book was: could Simon, like Marvin in The Hitchhiker's Guide to the Galaxy, think down to my level without getting a headache?

The first thing that strikes one when reading this book is the standard of editing and typesetting. Frankly, it's poor. It gets off to a bad start (the first word in chapter 1 should have been "Virtually", but the "r" has gone missing), and doesn't get much better. There are an amazing 28 people credited with having worked on this book, but even their combined efforts couldn't stop Apache being spelt with two p's, the pi symbol being reduced to a blob in several places, a chunk of the index pages being misnumbered, and various other mishaps.

The next thing that stands out is that the book seems unsure of its target audience. The back cover notes that it is aimed at "those new to programming who want to learn with Perl" and indeed, Beginning Perl does kick off with such basic questions as "What is programming anyway?" and "How do computers see number and letters?" However, in chapter 7, we read: "Now if you're familiar with (C) pointers, please try and put the knowledge aside..." This makes no sense. How would someone who needs to be told what programming is in chapter 1 suddenly have acquired a knowledge of C pointers by chapter 7?

Another confusing example: in chapter 11, on OOP, Simon advises us to use the Perl my $galileo = Person->new; syntax and avoid the C++-style my $galileo = new Person; but then ignores his own advice in the CGI chapter. Again, this sort of thing should have been caught by an editor.

The book does have its good points. The basics are covered reasonably well, and I liked the chessboard example that Simon uses to demonstrate references (although even here the pieces are in the wrong order). Later, when we get to downloading modules from CPAN, writing CGI programs and working with a mySQL database, the step-by-step instructions are clear and helpful.

We'll deduct more points, however, for not even mentioning a certain monastery in the "useful websites" section, and for the large amount of padding. The functions reference and the list of standard modules I can just about live with, but by the time we get to the ASCII character set and the GPL, it feels like being strapped to a chair and being forced to listen to Vogon poetry -- you just want to scream "Stop!"

To sum up: somewhere in here, there is a decent introduction to Perl struggling to get out. In the hands of a different publisher, and with a good editor, this might have been a good book. As it stands, however, it is difficult to escape the feeling that the author has been rather let down by Wrox. The usual book recommendations for learning Perl are merlyn and Tom Phoenix's Llama for those who already program, and Andrew L Johnson's Elements of Programming with Perl for those who, like myself, are new to the whole thing. There's probably room in the market for another good introduction to Perl, but Beginning Perl is not it. Perhaps an improved second edition (if Wrox are planning one) might be.