Catalyst is a flexible and powerful framework for writing web-based applications in Perl. But with power and flexibility you'll always get a certain amount of complexity and on the occasions that I have looked at Catalyst for a project, the complexity has got the better of me and I've always turned to a less complex (and therefore less flexible and powerful). I knew that Catalyst was something that I should take the time to learn, but it always seemed like such a daunting task.
For that reason, I was really looking forward to reading this book. I'm the kind of person who learns best from reading a book and I hoped that with a few tube rides reading this book, coupled with a few practical sessions in front of the computer, I'd soon have Catalyst. I'm sorry to report that having read the book, Catalyst is almost as confusing to me now as it was before.
I don't think that much of the blame can be laid at the feet of the author. Jonathan Rockway is a member of the core Catalyst development team. I've read his blog and his contributions to various mailing lists. He obviously knows his stuff. I think he's been badly let down by his editors.
The problems are at two levels. Firstly there are many typos and errors that should have been picked up at the copy-editing stage, and secondly (and more importantly) I don't think that enough thought has been put into the organisation of the book.
Let's start by looking at the typos. The problems start before the book really gets going. On the "About the Reviewers" page, each of the two reviewers gets a paragraph to say thank you to various people. For the first reviewer this is typeset as a blockquote, for the other it's a normal paragraph. You might think that it's too nit-picking to point this out, but I see it as an indication of either poor copyediting or as rushed production process. And neither of those options exactly inspires confidence in a book.
At other points, the typos are more serious. On page 32, it says "We'll also need two more CPAN modules for this chapter. These can be created using the following". An experienced Perl programmer will almost certainly mean that the author meant "installed" instead of "created", but a newcomer to the language might well find it confusing. There are also errors in code examples, so I strongly recommend keeping a close eye on the book's errata page.
All of these are simple enough errors that could have been put right with another couple of rounds of proofreading. There are, however, deeper issues that would be harder to fix.
The book takes the reader through a number of Catalyst projects of increasing complexity. But I don't think that anyone ever really sat down and planned how these projects work together to give a coherent introduction to Catalyst. A lot of the time it reads like a collection of completely unrelated articles about Catalyst. Good articles. Interesting articles. But completely unrelated to each other.
There are also important things missing from the book. The introduction to Model View Controller architecture is minimal to say the least. It might work to reconfirm what the reader already knows, but it certainly wouldn't be much use to someone who is coming to the concept completely new. The same is true of a lot of the Perl in book. Catalyst uses a lot of pretty advanced Perl syntax but none of it is explained in any detail. You can argue that a discussion of function attributes would be out of place here, but surely there's room for a mention of the right section of the Perl documentation.
In fact external references are almost completely missing from the book.There are no pointers to other books that might help you use Catalyst more effectively. If you look at all of the best Perl books, they have many references oto other Perl books and web sites. This book mentions the Catalyst web site and mailing list at the start, but that's about it.
The obvious rival to Catalyst is Ruby on Rails. And if you read books about Ruby on Rails, they are all friendly books which do all they can to draw the reader into their way of doing things. This book isn't going to convince anyone who isn't already a Perl programmer who understands MVC. I can't recommend this book to anyone outside of that group.