Higher-Order Perl: Transforming Programs with Programs and over 2 million other books are available for Amazon Kindle . Learn more
  • RRP: £51.99
  • You Save: £1.51 (3%)
FREE Delivery in the UK.
In stock.
Dispatched from and sold by Amazon.
Gift-wrap available.
Quantity:1
Higher Order Perl has been added to your Basket
Condition: Used: Like New
Comment: Used Good condition book may have signs of cover wear and/or marks on corners and page edges. Inside pages may have highlighting, writing and underlining. All purchases eligible for Amazon customer service and a 30-day return policy.
Trade in your item
Get a £5.05
Gift Card.
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Higher Order Perl Paperback – 31 Mar 2005


See all 2 formats and editions Hide other formats and editions
Amazon Price New from Used from
Kindle Edition
"Please retry"
Paperback
"Please retry"
£50.48
£14.20 £13.12
£50.48 FREE Delivery in the UK. In stock. Dispatched from and sold by Amazon. Gift-wrap available.

Frequently Bought Together

Higher Order Perl + Modern Perl
Price For Both: £72.08

Buy the selected items together



Trade In this Item for up to £5.05
Trade in Higher Order Perl for an Amazon Gift Card of up to £5.05, which you can then spend on millions of items across the site. Trade-in values may vary (terms apply). Learn more

Product details

  • Paperback: 600 pages
  • Publisher: Morgan Kaufmann; 1st ed edition (31 Mar 2005)
  • Language: English
  • ISBN-10: 1558607013
  • ISBN-13: 978-1558607019
  • Product Dimensions: 18.8 x 3.5 x 23.9 cm
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (3 customer reviews)
  • Amazon Bestsellers Rank: 102,982 in Books (See Top 100 in Books)
  • See Complete Table of Contents

More About the Author

Discover books, learn about writers, and more.

Product Description

Review

"It's well written.everyone who claims to be an expert ought to read it.these techniques allow programmers to accomplish far more than they're used to." —Gregory V. Wilson, Dr. Dobb's Journal, November 2005 "It is, quite simply, one of the best books on programming I have read for a long time."—Martin Schweitzer, Computing Reviews, Association for Computing Machinery, July 2005 "Mark Jason Dominus has hit his mark with Higher Order Perl. It is a very informative book that is a must read for Perl programmers who want to take their skills to the next level.” —Mark Rutz, Linux Journal, November 2005

"Higher-Order Perl is one of the Perl books that should have a place on the bookshelf of every Perl programmer. It offers an in-depth understanding of important programming techniques and fundamental concepts. The chapter on parsing alone is worth the price of this book. I do not know a better text about parsing in Perl.” —Reinhard Voglmaier, Unix Review, November 2005

"Higher-Order Perl is the most exciting, most clearly-written, most comprehensive, and most forward-looking programming book I've read in at least ten years. It's your map to the future of programming in any language." —Sean M. Burke, Leading Programmer, Comprehensive Perl Archive Network (CPAN) "There are lots of book that teach you new Perl modules or techniques. This book goes beyond that and teaches a new way to think about Perl programming.” —Peter Norvig, Google Inc.

"As a programmer, your bookshelf is probably overflowing with books that did nothing to change the way you program. . . or think about programming. You're going to need a completely different shelf for this book. While discussing caching techniques in Chapter 3, Mark Jason Dominus points out how a large enough increase in power can change the fundamental way you think about a technology. And that's precisely what this entire book does for Perl. It raids the deepest vaults and highest towers of Computer Science, and transforms the many arcane treasures it finds--recursion, iterators, filters, memoization, partitioning, numerical methods, higher-order functions, currying, cutsorting, grammar-based parsing, lazy evaluation, and constraint programming--into powerful and practical tools for real-world programming tasks: file system interactions, HTML processing, database access, web spidering, typesetting, mail processing, home finance, text outlining, and diagram generation. Along the way it also scatters smaller (but equally invaluable) gems, like the elegant explanation of the difference between 'scope' and 'duration' in Chapter 3, or the careful exploration of how best to return error flags in Chapter 4. It even has practical tips for Perl evangelists. Dominus presents even the most complex ideas in simple, comprehensible ways, but never compromises on the precision and attention to detail for which he is so widely and justly admired. His writing is—as always—lucid, eloquent, witty, and compelling. Aptly named, this truly is a Perl book of a higher order, and essential reading for every serious Perl programmer.” —Damian Conway, Co-designer of Perl 6

"Higher-Order Perl is a terrific book targeted at the advanced Perl programmer with a significant computer science background. The tone, content, and code make Higher-Order Perl memorable; the knowledge, wisdom, and intuition it provides make it a book any Perl programmer should aim to understand and digest in full.”.” —Teodor Zlatanov, Programmer, Gold Software Systems

About the Author

Mark Jason Dominus has been programming in Perl professionally since 1992, when he was a UNIX sysadmin with the University of Pennsylvania Department of Computer and Information Sciences. Mark is an occasional contributor to the Perl Core, and is the author of the standard perlreftut man page as well as the Tie::File, Text::Template, and Memoize modules. From 1999-2001, Mark was the managing editor of the www.perl.com website. He was also a columnist for The Perl Journal for several years. All of his articles for TPJ have been reprinted in Computer Science and Perl Programming: Best of the Perl Journal, from O'Reilly and Associates. Mark's other Perl-related articles have appeared in magazines such as Wiredand IEEE Software. Since 1998, Mark has been a professional Perl trainer. In addition to speaking at conferences such as YAPC, the O'Reilly Open Source Conferences, Usenix, and LISA, he has given training courses for large companies and organizations, including Morgan Stanley, IBM, Bristol-Myers Squibb, and the U.S. Air Force. Mark's work on Rx, a Perl regular expression debugger, won the 2001 Larry Wall Award for Practical Utility.

Inside This Book (Learn More)
First Sentence
Until the release of Perl 5.6.0, there was no good way to generate a binary numeral in Perl. Read the first page
Explore More
Concordance
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index
Search inside this book:

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

5.0 out of 5 stars
5 star
3
4 star
0
3 star
0
2 star
0
1 star
0
See all 3 customer reviews
Share your thoughts with other customers

Most Helpful Customer Reviews

4 of 4 people found the following review helpful By Thing with a hook on 4 Aug 2007
Format: Paperback
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.
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
2 of 2 people found the following review helpful By Daniel Otterburn on 26 July 2007
Format: Paperback
As the title suggests, this book is about advancing your programming techniques in Perl and is definitely not for the beginner. I had used some of the techniques before, though largely without being fully aware of the "theory", but most were either entirely new to me or concepts that I had previously considered to be the domain of the true guru (and well out of my reach). And this despite being a professional Perl programmer for over 4 years!

Mark Jason Dominus works carefully through a number of well explained examples, illustrating how and why each technique should or could be implemented, and developing each example as the book progresses. Though I found myself frequently having to re-read his often terse code examples and though I cannot claim to have understood _every_ techinque well enough to implement it, I have found that I have used at least one of the techniques he describes in almost every script or module I have written since I finsihed the first chapter!

I would say that this book is an absolute must for any serious Perl programmer who does not already consider him or herself to be at guru status.

Buy it, read it, understand it (eventually) and become a better programmer!

(It occurs to me that for those with a more formal training in Computer Science, the techniques described may not be quite a revelatory as they were for me, however the implementation examples in Perl will still, undoubtedly, be extremely useful.)
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
Format: Paperback
I echo all the reviews so far this book is all about the "Art" of computer programming, and as such is comparable to Knuth's work, than the usual Cookbook.

Its always great when a book teaches you things that you have forgotten or don't know. The description of Scope, Duration and Lexical closure in chapter 3, wakes you up to the fact that just because this language looks like C its not C.

Perl is a language that I use all the time, as its very easy to build stuff that works. This book makes you think about some of the stuff that you have produced over the years, and wonder if you could have done better.

Mark Dominus and friends have reminded us that programming is not just about function, but is about style, method and art.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again

Most Helpful Customer Reviews on Amazon.com (beta)

Amazon.com: 17 reviews
134 of 137 people found the following review helpful
Aptly named 7 April 2005
By Damian Conway - Published on Amazon.com
Format: Paperback
As a programmer, your bookshelf is probably overflowing with books that did nothing to change the way you program...or think about programming.

You're going to need a completely different shelf for this book.

While discussing caching techniques in Chapter 3, Mark Jason Dominus points out how a large enough increase in power can change the fundamental way you think about a technology. And that's precisely what this entire book does for Perl.

It raids the deepest vaults and highest towers of Computer Science, and transforms the many arcane treasures it finds---recursion, iterators, filters, memoization, partitioning, numerical methods, higher-order functions, currying, cutsorting, grammar-based parsing, lazy evaluation, and constraint programming---into powerful and practical tools for real-world programming tasks: file system interactions, HTML processing, database access, web spidering, typesetting, mail processing, home finance, text outlining, and diagram generation.

Along the way it also scatters smaller (but equally invaluable) gems, like the elegant explanation of the difference between 'scope' and 'duration' in Chapter 3, or the careful exploration of how best to return error flags in Chapter 4. It even has practical tips for Perl evangelists.

Dominus presents even the most complex ideas in simple, comprehensible ways, but never compromises on the precision and attention to detail for which he is so widely and justly admired.

His writing is--as always--lucid, eloquent, witty, and compelling.

Aptly named, this truly is a Perl book of a higher order, and essential reading for every serious Perl programmer.
57 of 59 people found the following review helpful
An instant classic 28 Mar 2005
By M. Friedman - Published on Amazon.com
Format: Paperback Verified Purchase
Many in the Perl community have been eagerly awaiting Higher Order Perl, and they will not be dissapointed. Not only is this a great Perl book, it's one of the best general computer science texts I've read in a long time. Dominus focuses on the functional, LISP-like aspects of Perl, breaking readers of the procedural habits they have developed writing Perl code. The book starts with a few simple examples of callbacks and closures, and quickly moves on to developing functions that dynamically manufacture and return other functions. These techniques are used to their fullest potential as Dominus shows us how to use dynamic iterators to eliminate recursion; an invaluable technique considering Perl's lack of tail call optimization. Further techniques include using iterators to transform other iterators (analagous to Perl's map function), currying, using linked lists to create "lazy" streams that produce their data upon request, and function memoization. Dominus also makes digressions into Perl internals, giving the reader a magnificent depth of understanding about how these techniques actually function under the hood.
20 of 20 people found the following review helpful
Lives up to the expectations 7 Aug 2006
By Eli Bendersky - Published on Amazon.com
Format: Paperback
In "Higher Order Perl" (or HOP as it's affectionately called in the Perl community), the renown Perl wizard Mark Jason Dominus (MJD) shows how to take Perl coding to the next level by applying advanced programming techniques from the domain of functional programming.

The book covers recursion (including methods to convert recursive code to iterative code), iterators, streams, memoization, currying, parsing, constraint programming and higher order functions (functions that take functions as arguments and/or return other functions). It is packed with great, sophisticated code which is explained very well and is a model for correct programming. The author takes an approach similar to Peter Norvig's PAIP - advanced coding techniques are presented, and then non-trivial programs are written to demonstrate these concepts.

The comparison with Lisp here is unavoidable, and MJD talks about Lisp in his preface. He claims that Perl shares 6 of the "7 features unique to Lisp" quoted from Norvig's PAIP, and that this basically means that most of what can be written in Lisp can be written in Perl in roughly the same manner. But as he himself admits in a later interview, the 7th "missing feature" of Lisp, namely its uniform syntax, is what *really* differentiates Lisp from the rest. Lisp's syntax allows a very clean handling of higher-order functions, list-processing, and most importantly macros. The contrast between MJD's own code in HOP and Norvig's PAIP code is the best example for this fundamental difference. Be MJD's code as clean and nice as it is (for Perl, anyway), it is nowhere near the sheer aesthetic appeal of Norvig's Lisp.

Still, Lisp is Lisp and Perl is Perl, and each has its respectable place in the world of programming. HOP is a great book to read, and I warmly recommend it to any intermediate+ Perl programmer. For people who have never programmed in Lisp or have never learned functional programming techniques, this book is a must - it will literally take your code to a higher level. For diehard fans of Lisp, this book demonstrates how to employ most of your favorite techniques in the most practical language out there (though the Perlish syntactic sugar will at times make your teeth grind).
10 of 10 people found the following review helpful
a must-read book for serious Perl programmers 5 Aug 2007
By Ricardo Signes - Published on Amazon.com
Format: Paperback Verified Purchase
I had originally planned to read Higher Order Perl and write my review immediately. When it became clear that I wasn't going to read HOP straight through, I figured I'd write a review when I was done. More and more, it looks like my reading of the last two chapters is being indefinitely delayed. I'm going to write what I think so far, while it's still more or less fresh in my mind.

Higher Order Perl was originally going to be given some fairly bland name, like "Handbook of Advancted Perl Techniques." This would have been a spot-on (but uninteresting) title. HOP provides the reader with explanation and demonstration of techniques for problem-solving that are often overlooked. The examples are complex and detailed, but not byzantine, and they're built up slowly, piece by piece, so that each line of code's meaning and significance are made clear.

The title "Higher Order Perl" refers to the book's most central technique, functional programming. While many programmers understand how to abstract a specific solution into a more general one, Dominus helps the reader learn to push the envelope, abstracing generic solutions into extremely generalized solutions that can be applied to seemingly-unrelated problems. This is frequently done by the construction of functions that build functions that build functions -- and so on, functions all the way down. Instead of solving the problem in base, earthly Perl, the programmer produces Perl elements of a higher order which, operating in harmony, become all things to all people.Well, I'm hyperbolizing, but I think it would be hard for me to over-emphasize the value of techniques like closures, iterators, and currying. They are, in part, what make Lisp so powerful, and the marriage of Lisp's power and Perl's expressivity is a happy one.As for the writing, it is good. The language is clear and the material is well-presented. One should be cautioned, though, that the book is dense. Dominus is constantly pressing onward, explaining new techniques or new ways to apply already-explained techniques. I found myself reading each page carefully and deliberately, only to turn back to it a few pages later, to be sure that I understood how the new material was relying on the old. It made the book a challenge to read, but it was a thoroughly enjoyable challenge. I never felt so frustrated by a bizarre idea that I gave up or so bored with an over-explained one that I skipped ahead.

Finally, while the techniques that Dominus presents are powerful and advanced, the required knowledge of Perl is not particularly great. Because he clearly explains the key Perl concepts that he uses (especially closures and associated scoping issues), any competent programmer with a working knowledge of Perl should be able to put the ideas in Higher Order Perl to work.

For serious Perl programmers, Higher Order Perl is a must-read book.
7 of 7 people found the following review helpful
Solving Problems using Perl in a Functiona Programming approach 9 Aug 2007
By Shlomo Yona - Published on Amazon.com
Format: Paperback
Functional Programming is a programming paradigm that is very useful and must be part of the tool-arsenal of any software engineer and developer along with the well known Object Oriented Programming, the procedural programming approaches and the less known Aspect Oriented programming.

HOP gives an easy access to Functional Programming for Perl developers. The book is written in a personal manner and is fun to read and sometimes even funny. It is definitely not a dry factoid book.

The examples in the book are useful not only as they demonstrate nicely the need and power of functional programming but also due to their practicality for seasoned programmers.

I felt the influence of books such as "Structure and Interpretation of Computer Programs" by Abelson and the Sussmans" on HOP, and it was very nice and helpful to read MJD's recommendations for other good readings on the subject.

I got to reading HOP cover to cover, several times. I attempted to solve myself the problems raised in the book and found the process of doing that enjoying and rewarding. Reading on the commentary and approach suggested by MJD was in many ways enlightening. You can find some very amusing footnotes in the book that makes it yet more fun to read.

MJD gives a refreshing view on Perl programming, and shows that tasks that can be very complicated and hard, or computationally intense can be turned "inside out" and handled in a functional programming approach that simplifies understanding, simplifies the solution and also simplifies the implementation.

MJD presents a very useful introduction to functional programming using Perl using practical problems, and the nice thing is that even theoretical problems get practical usages when explained, which makes the reading fun, and worth the while for the non-theoretical people amongst the readers.

Though the book sometimes goes into detail or length too much for my taste, it does do a good job in giving the new view of the capabilities of a Perl programmer and the Perl programming language and how to use them.

I can testify that a lot of code that I got to see, write and maintain got a considerable "lift" and "upgrade" since me and other colleagues of mine read this book and used some of the wisdom that it offers.

There are many good and useful follow-ups to this book in the form of Perl modules on CPAN, articles and posts on the web and some book chapters. Look them up!

Also, if you feel that this functional programming approach is useful to you, you might want to probe further on this by reading Haskell, Lisp, Scheme (and other functional programming languages) literature. There are several "must read!" for these programming languages that will give you a very deep understanding and good skills in this programming paradigm. Also -- you will find, especially after reading HOP, that you now have the tools to easily and practically apply the functional programming principles that you learn in Functional Programming books to Perl and use it in your Perl code.

A few words on MDJ himself: I read a lot of what he wrote for Perl and used some of his modules and code that is available on the web. I had the pleasure of hosting him on the first YAPC in Israel and attend a 3 day course that he gave. He is a very smart person, a very nice person and an excellent teacher and a very good writer. If you don't already know MJD, this book is a very good way of getting access to some of the wisdom that this gut has to offer.

If you don't know which Perl books to buy and/or to read, know this: HOP is one of the books that you should read!

(It is funny that almost 3 years after I read this book for the first time and after reading some of the material before editing, as MJD offered in his private mailing list, I only now get to write a review on it. But still, it surely deserves a book review and a good mark too.)
Were these reviews helpful? Let us know


Feedback