Belated Modern Perl review

Reading time: 2 minutes

I purchased Modern Perl as soon as it came out and I read it right away. I meant to write it up a long time ago. Here’s a copy of the review I posted to Amazon:

I had a hard time characterizing this wonderful book. It explains the fundamentals, but it’s not an introductory book like Learning Perl. It covers almost every feature of the Perl 5 language, but it’s not a reference book like Programming Perl. It explains common idioms, but it’s not a guide to Perl 5 fluency like Effective Perl Programming. It contains many practical suggestions, but it’s not a book of tips like Perl Hacks.

I can only describe it as a “textbook”. If I had to pick a single book to teach Perl 5, this is the one I’d choose. As I read it, I was reminded of the first time I read K&R (C Programming Language) and how much learning was packed into it. (It’s the only college programming text I still have). In a slim 250 pages, Modern Perl obsoletes most of my shelf of Perl 5 books. It’s not intended for a complete novice to programming (any more than K&R was), but in the hands of a competent programmer or a diligent student it will teach everything that one needs to know to write Perl 5 well.

What I especially like about Modern Perl is that it puts particular emphasis on understanding fundamental Perl 5 concepts like “context” and “scope”. From these and other foundations, one can understand why certain programming idioms have emerged and one can avoid surprises in the odder corners of the language. If you want a book to spoon feed cut-and-paste code to you, this is not the book for you. If you want a book that will teach you to write your own code confidently, this is an excellent resource.

If you already know some programming and want to learn Perl 5, then Modern Perl is the book you should get. If you already know Perl 5, but don’t think you know it well, or if you haven’t kept up in developments in Perl 5 since the late 1990’s, then Modern Perl will get you up to speed.

•      •      •

If you enjoyed this or have feedback, please let me know by or