Higher-Order Perl: Transforming Programs with Programs and over one million other books are available for Amazon Kindle. Learn more

Vous voulez voir cette page en français ? Cliquez ici.

Sign in to turn on 1-Click ordering.
Amazon Prime Free Trial required. Sign up when you check out. Learn More
More Buying Choices
Have one to sell? Sell yours here
Start reading Higher-Order Perl: Transforming Programs with Programs on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Higher-Order Perl: Transforming Programs with Programs [Paperback]

Mark Jason Dominus

Price: CDN$ 80.95 & FREE Shipping. Details
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Only 2 left in stock (more on the way).
Ships from and sold by Amazon.ca. Gift-wrap available.
Want it delivered Monday, April 21? Choose One-Day Shipping at checkout.


Amazon Price New from Used from
Kindle Edition CDN $65.59  
Paperback CDN $80.95  

Book Description

March 14 2005 1558607013 978-1558607019 1
Most Perl programmers were originally trained as C and Unix programmers, so the Perl programs that they write bear a strong resemblance to C programs. However, Perl incorporates many features that have their roots in other languages such as Lisp. These advanced features are not well understood and are rarely used by most Perl programmers, but they are very powerful. They can automate tasks in everyday programming that are difficult to solve in any other way. One of the most powerful of these techniques is writing functions that manufacture or modify other functions. For example, instead of writing ten similar functions, a programmer can write a general pattern or framework that can then create the functions as needed according to the pattern. For several years Mark Jason Dominus has worked to apply functional programming techniques to Perl. Now Mark brings these flexible programming methods that he has successfully taught in numerous tutorials and training sessions to a wider audience.

* Introduces powerful programming methods—new to most Perl programmers—that were previously the domain of computer scientists
* Gradually builds up confidence by describing techniques of progressive sophistication
* Shows how to improve everyday programs and includes numerous engaging code examples to illustrate the methods

Customers Who Bought This Item Also Bought

Product Details

Product Description


"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 "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

"Mark Jason Dominus explores recursion so thoroughly he literally turns it inside-out, showing in simple terms how to turn recursive functions into iterators.” -Peter Scott, President, PSDT, 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.” Reinhard Voglmaier, UnixReview.com, November 2005

"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

Book Description

The eagerly awaited book by one of the best-known Perl developers summarizing years of innovative practice

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
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index
Search inside this book:

Customer Reviews

There are no customer reviews yet on Amazon.ca
5 star
4 star
3 star
2 star
1 star
Most Helpful Customer Reviews on Amazon.com (beta)
Amazon.com: 4.7 out of 5 stars  15 reviews
131 of 134 people found the following review helpful
5.0 out of 5 stars Aptly named April 7 2005
By Damian Conway - Published on Amazon.com
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.
55 of 57 people found the following review helpful
5.0 out of 5 stars An instant classic March 28 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.
19 of 19 people found the following review helpful
5.0 out of 5 stars Lives up to the expectations Aug. 6 2006
By Eli Bendersky - Published on Amazon.com
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
5.0 out of 5 stars a must-read book for serious Perl programmers Aug. 5 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.
12 of 14 people found the following review helpful
5.0 out of 5 stars Great Perl-Fu Dec 1 2005
By Daniel Franke - Published on Amazon.com
I'm mostly a Lisp hacker and don't do much with Perl, so I don't know why this book caught my eye, but I'm glad it did. It shows you how to use Perl for all kinds of powerful (and sometimes mind-blowing) tricks which are commonplace in functional languages, but which it never occurred to me to attempt in Perl. Like an earlier reviewer pointed out, this is far from the best book out there on functional programming; if that's solely what you're interested in, buy SICP. It is, however, by far the most interesting book I've ever seen on Perl. After I finish reading it, I'm going to give it away to someone who still thinks in Java.

Look for similar items by category