- Amazon Student members save an additional 10% on Textbooks with promo code TEXTBOOK10. Enter code TEXTBOOK10 at checkout. Here's how (restrictions apply)
Mastering Perl Paperback – Jul 26 2007
Special Offers and Product Promotions
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
Creating professional programs with Perl
About the Author
brian d foy is a prolific Perl trainer and writer, and runs The Perl Review to help people use and understand Perl through educational, consulting, code review, and more. He's a frequent speaker at Perl conferences. He's the co-author of Learning Perl and Intermediate Perl and the author of Mastering Perl. He was been an instructor and author for Stonehenge Consulting Services from 1998 to 2009, a Perl user since he was a physics graduate student, and a die-hard Mac user since he first owned a computer. He founded the first Perl user group, the New York Perl Mongers, as well as the Perl advocacy nonprofit Perl Mongers, Inc., which helped form more than 200 Perl user groups across the globe. He maintains the perlfaq portions of the core Perl documentation, several modules on CPAN, and some stand-alone scripts.
Inside This Book(Learn More)
Most Helpful Customer Reviews on Amazon.com (beta)
More likely, actually, I'd present him a few chapters ripped out of the book and rebound. It's not that there are chapters I object to, or that don't matter. It's that some of the chapters are about safety and responsibility, while others are about wielding deadly weapons. I want up-and-coming Perl programmers to know about taint mode, debugging, profiling, and good code formatting long before typeglobs, ties, or AutoSplit. I'd divide the chapters into "things you must learn to become a master of the language" and "things you had better know if you want to be considered a good professional."
The chapters are not particularly cumulative, and can be read out of order. If you're ready for the book in general -- which basically only means understanding the basics of packages, references, regex, objects, and closures -- you're ready for any chapter at any time. I read the chapters in order, and I was glad to switch between technical and procedural topics. It let my brain rest a little between bouts of dense code.
My main concern is the lack of warning given on a number of tools discussed. brian begins, in the first chapter, by saying that coverage does not mean endorsement, but I don't think that's quite strong enough in some cases. The first chapter discusses some regular expression techniques, and casually mentions using $&, with no mention of the long-standing performance bug this introduces. Maybe I'm being silly, but it seems like such an easy and worthwhile thing to mention -- especially since the section in which $& is discussed is actually about @-, which can be used to efficiently replace $&. (As a side note, while reading this chapter, on what was effectively the fourth page of the book's real material, I saw $#- casually used in some code. That is when I realized that this book was not going to screw around.)
Another chapter is devoted to tied variables, which are fantastically fun, but can also be a major source of headaches. Maybe brian's thinking is that any real master will be able to make his own judgement on the subject. Still, without an included warning about the danger of a few topics, I'll definitely have to red ink a few margin notes on the office copy.
My worries about sharp tools, though, are far outweight by the excellent explanations of the features covered by the book. brian's explanation of a few features of Perl really, really cleared a few things up for me. I feel fairly at home in Perl, but there are a number of features that I've always felt were never going to stick with me, and that I'd always need to refer to the docs on. Among these were the regex position bits (/g, /c, and \G), which I've used, but always with perldoc open; also, pack, which I've only ever used in its simplest form. After reading the explanations of both in Mastering Perl, I almost didn't notice that I had quietly internalized the concepts. One of my notes actually reads, "p219: pack: I get it now!"
I think this is because of the extremely straight-forward presentation of the material. It doesn't go to great lengths to create elaborate scenarios. It says, "Here is a feature. This is how it works. Here are a few examples. Now you understand." brian's paragraph on pack was far, far more useful as a learning tool than the four hundred lines of pack documentation in perldoc. What's even better, though, is that now I can look at that perldoc and understand everything it says quite easily.
This kind of excellent, straightfoward explanation of fairly complex topics is present throughout the book, and is the best reason to pick it up.
Finally, I had a few typographical quibbles with the book. There are a number of footnotes throughout the book, and that's fine, but rather than using numbers or sticking to a commonly-seen set of characters, the footnote markers are unusual. I think it progresses in each chapter: asterisk, dagger, double-dagger, funky || symbol, and possibly others. The asterisk looks lousy and the || is just weird, and not immediately obvious as a footnote marker. I don't understand the thinking. Much worse, though, the monospace at sign (@) used in printing the book is from another planet. It hardly looks like an at sign at all. Given the quantity of @'s seen in Perl code, this is extremely distracting, and should really be fixed before O'Reilly prints more Perl books.
So, I had a few concerns about journeymen programmers picking up dangerous tools, and I didn't like the at sign. These are pretty small concerns, in the end, when compared with the quality of the material. It's very clear, and covers most of the topics I'd expect in a book like this, and covers most of them quite thoroughly. I'd want this on the shelf at any office that might hire non-masters, and I'd want those employees to have their hearts set on one day understanding everything in Mastering Perl.
Note that the thrust of the book is about providing the information you need to use Perl to build applications, so there's nothing about Perl internals, or embedding Perl or dropping down to C to speed things up. For that sort of thing, you might want to look at the various editions of Advanced Perl Programming.
Stylistically, Mastering Perl is a bit of a departure from the previous two books in the series. Gone is the tutorial feel, and there's no overarching pop culture theme to the examples. Instead, you're assumed to be competent and ready to develop your own code, and brian d foy's style treats the reader as an equal.
There are two types of material covered in the book. The first rounds off the rest of the Perl language not covered in the first two books. These are all things which are not exactly necessary for every day programming, but which anyone motivated sufficiently to learn enough Perl to be interested in this book will just want to know. Typeglobs, the symbol table and tied variables top this list. Additionally, there are excellent chapters on error handling and advanced regular expressions, the latter of which introduces the options and anchors used in lexing, and look-ahead and look-behind assertions.
The other material covers useful libraries for developing in Perl. Examples include chapters devoted to documentation with POD, serialization, logging, debugging, profiling, and benchmarking. These are all comprehensive and use fairly long examples with non-trivial code.
You could cobble together a minority of the material presented in this book from other sources (e.g. some of the stuff on ties or the symbol table), such as Effective Perl Programming, Perl Medic, Perl Debugged or Object Oriented Perl (and there's a helpful Appendix which recommends several such books as further reading), but having it presented here in one cohesive whole is a far superior learning experience, thanks to the author's clear explanations and copious examples. Additionally, there's stuff here that you just won't find in those other books (e.g. do you know what the PROPAGATE method does on an object?). I'd like to think I've read most of the important Perl books, but I still learnt a lot, and it filled in a lot of holes. It's bang up to date, too, which many of the other books you'd otherwise be relying on can't claim to be.
Overall, this fills a gaping void in the Perl literature and provides a suitable bridge between Intermediate Perl and the likes of Perl Cookbook and Perl Best Practices. It's an excellent, focussed book which provides almost everything you need to do real Perl programming.
brian's writing is clear and easy to read, making this book an invaluable reference for me.
One optional route would be to read:
1) Learning Perl
2) Intermediate Perl... and finally
3) Mastering Perl
brian d foy mentions in his introduction and appendix A that the path to mastery involves learning from many people... and to learn from brian is an advantage. Appendix A is a list of Further Reading and by following up on many of these compounds the effect of the book. You get the bang for your buck.
Chapter 3 on Secure Programming Techniques is helpful because it places the topic front and center. This topic should find its way downstream into Learning Perl to encourage secure programming as early as possible.
I found immediate value in the chapters on benchmarking, profiling (especially DBI profiling) and logging. The chapters on Cleaning Up Perl (chapter 7: perltidy and de-obfuscation) and Configuring Perl (chapter 11: dealing with switches) are a great recap of material critical for "creating professional programs with Perl".
PS - My personal route to mastering Perl had a required stop at "Programming the Perl DBI".
If you don't know what these things are, then with a little motivation you can find everything about them using Google without the need for this book. If this would be any other book about programming, i'd give it no more than 3 stars.
However, brian d foy's first-person writing style is very readable and enjoyable, which awards this book an extra star, and does make this book a good buy for people who learned the basics from Learning Perl or Programming Perl. Furthermore, as great and relevant as The Camel Book is, its last edition was published in 2000, and it is already a little dated, in terms of both the technology and the culture of Perl, so Mastering Perl is a pretty good way to get up-to-date.
To sum up - while this book is not as essential as Programming Perl, Perl Cookbook or Perl Best Practices, it is certainly up to the high standards set by those O'Reilly titles.
Look for similar items by category
- Books > Computers & Technology > Computer Science
- Books > Computers & Technology > Programming > Languages & Tools
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Testing
- Books > Computers & Technology > Software
- Books > Computers & Technology > Web Development > Programming
- Books > Deals in Books
- Books > Textbooks > Computer Science & Information Systems > Computer Science
- Books > Textbooks > Computer Science & Information Systems > Programming Languages
- Books > Textbooks > Computer Science & Information Systems > Software Design & Engineering