In a book market awash with teach-yourself-in-x-time-units, cookbooks, and API tutorials, Higher-Order Perl is ambitious. It attempts to bring functional techniques to Perl, leaning heavily on two language features: closures, and functions as first-class entities. To enjoy this book you need to be completely comfortable with Perl's syntax, there's lots of code to read and digest, and if you can't follow it, you're going to get lost very quickly, because there are lots of new concepts going to be thrown your way. There's no outlandish symbol table hacking, almost no object orientation, not even much use of modules, but it is in a very different style to most of the Perl you're used to.
If, like me, most of the programming languages you're familiar with are more closely related to C than Lisp, this is going to be a challenging read. It's going to take you a long time to get through this book, and it'll probably require re-reading (more than once) to fully get it all. This is a book bursting at the seams with ideas, beginning with recursion, and then onto caching, iterators, streams and currying. The last two chapters show how to apply these techniques to parsing and declarative programming, and they feel like mini books in themselves. Applications of the code range from classics like Tower of Hanoi, Fibonacci sequences and the Newton Raphson method, to more practical material including databases, tied files, and directory walking.
Part of the reason I enjoyed this book so much may be because I have no formal training in Computer Science, and of course, the likes of Structure and Interpretation of Computer Programs and The Little Schemer contain similar concepts. But for someone without functional programming experience it's great to have it in Perl. Lispniks, MLers and Haskellites may well be familiar with these ideas already, but they should consider this an enticing 'gateway book' for Perl programmers. And Introduction to Functional Programming using Haskell just isn't as well-written as HOP. There's no hiding from the fact that if you want to fully appreciate the material here, you're going to have to work hard at it, but Mark Jason Dominus does a great job at stopping things from feeling like a textbook, and knows how to inject some wit into the proceedings without being distracting. Full marks to Morgan Kaufmann for the layout and overall production quality, too.
I keep The Camel, Perl Cookbook and Perl Best Practices on my desk when programming Perl. HOP is not going to be joining them (yet), it's not that sort of a book. Instead it's a very different intellectual pleasure and easily one of my favourite and most important Perl books (only PBP edges it out due to the latter's everyday practicality). If you're serious about Perl, you need to read this book. If you're serious about programming, ditto. Hell, this might just be a good enough reason to learn Perl if you don't already (admittedly, the chances of such a person reading this far are small).
HOP has set the bar very high. Python and Ruby authors, please step up!