The Definitive Guide to Catalyst: Writing Extendable, Scalable and Maintainable Perl Based Web Applications

This second book on Catalyst is due to be released on the 2009-Jul-12. Please put reviews and commentary below.

Quick Introduction to Catalyst

A book takes a while to read. For a 7-minute introduction to Catalyst, please see one of the screencasts.


This section is for user reviews of the book. Rather than putting them here, you might want to put them on the page as well or instead.


Errata, which will inevitably exist, can be viewed and reported directly to Apress. If you find an error, reporting it is super-easy. Although it isn't really that well organized (this site could use a page that is).


Books are written on paper, in hard copy and so go out of date quickly. While every effort is made to keep the book as up to date as possible, this isn't really feasible due to the constraints of publishing chunky labour intensive hard copy. This section is for stuff in the book that's been superseded or that simply wasn't mentioned in the book. We'll move this to a separate page if it gets big enough. When it gets too big we'll know it's time for a second edition. Here's one to start with:

use Test::More qw/no_plan/ commentary

Matt Trout explains why, and illustrates a more up to date way of achieving the same thing.

Creating your own CPAN modules

A nice short but detailed explanation.

For SOAP lovers everywhere.

The book skips over SOAP because the author couldn't figure out how to get it working in the time available. For -maschocists- people that want or need to know, the author of Catalyst::Controller::SOAP has written an article on implementing SOAP in Perl which utilizes that module.

Want basic CRUD functionality?

The book suggests but doesn't cover HTML::FormFu. Check out the exciting looking Catalyst::Plugin::AutoCRUD for an excellent looking alternative. HTML::FormHandler is also a popular new Moose form processing package.

Extra neat stuff that local::lib can do (thanks t0m):

Use a self contained local::lib. Bootstrap local::lib (see the docs), then, from inside your MyApp directory:

eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=--self-contained,local_lib)make installdeps

And you'll then have all the dependencies for your app (given you listed them in Makefile.PL) built for you (by issuing make installdeps), inside your app directory, where you can add them to revision control. Note that this doesn't work if you already have all of your CPAN dependencies installed in your system-wide perl library. Also, adding a truckload of dependency files (several thousands are not seldom) to your repository can seriously slow down operations on your repository (Subversion is prone to this, git should handle them just fine).

Note that this may not work reliably. See this example Catalyst applicaiton for the current definitive solution.

I generally have a per-app local::lib, and a couple of trivial shell scripts I put in the scripts/ directory which can give you a shell with the environment setup correctly to see this local::lib etc..

Then pushing a new version of your application (and all your dependencies) is just a case of rsyncing your app up to your web server :)

My tags:
Popular tags:
Powered by Catalyst
Powered by MojoMojo Hosted by Shadowcat - Managed by Nordaaker