Author: Andrew Johnson
Reviewed by: Dean Wilson
If you come from a non-programming background and you want to learn Perl go and buy this book. Now. The rest of the review will wait until you get back. If your coming to Perl from another language and you have basic to intermediate knowledge and experience of programming concepts go and buy this book. If you know Perl well then buy this book and when ever anyone asks you a lot of questions hand it to them and smile as you realise you've just done them a favour.
From the start to the end of this book it smells of good practice. All the code is readable, all the examples use strict and warnings to catch the usual typos and human errors and the concepts of clear and idiomatic coding are explained and illustrated in a style that makes the book an easy read.
The first part of the book, chapters 1 through 3, provide the gentle but essential grounding that shows you not just how to get into the correct frame of mind for programming but how to program Perl in the style of other conscientious Perl programmers. With examples that can actually be considered useful enough to warrant saving (A rare thing in itself!) and an explanation of some of the best coding practices to use for Perl coding this section serves as a good base for any non-programmers that want to pick up Perl as a new language.
The second part of the book introduces the basic concepts that you need to be able to start solving day to day problems with Perl. By moving the reader onto useful explanations and examples so early in the book it encourages the reader to play around with the language and makes it simpler to do things with the language without becoming confused with meaningless minutiae. By the end of the six chapters that comprise the second part of the book the reader will have enough of a grounding in Perl to be able to write small programs and follow the basics of any reasonably well written piece of Perl code.
Following this section come a group of chapters that cover some of the more intermediate features of Perl such as an introduction to the regular expression features of Perl. A subject that can be counted on in most other cases to give the impression of an impenetrable hedge of line noise but in this case is explained simply from the bottom up with progressively less trivial examples. One of the best features in this section of the book are the diagrams that show how a Perl regular expression works its way along a string trying to match. I defy you to be confused about how a regex works after reading this chapter.
The other chapters in this section cover more advanced aspects of topics introduced in the last section with more coverage of the less used IO capabilities and how the regex engine integrates with Perl strings. The last chapter of this section that deserves a special mention is the chapter on using modules, a section of the book that shows one of the reasons why the Perl community is so useful and how to harness the communities work with code reuse with modules from CPAN.
The closing section of the book is an introduction to some of the more advanced Perl features. Covering topics such as Perls object-orientated capabilities and how to build your own modules to allow you greater flexibility in your projects as well as giving a taste of the work others have put in to make their modules available. This section only gives basic coverage, the aim of the book is to teach basic to intermediate Perl, but it does serve as a nice teaser to what else is available and acts as a brief 'where do I go next?' ending to the book.
I don't really have anything bad to say about this slim tome, I've seen multiple people learn basic Perl from it and I found it to be a good read despite having moderate Perl experience when I first read it. What I will say is that I wish this book had been present when I had started to learn Perl because as a starting Perl book this one's going to take some beating.
Summary: Whether you're new to programming and want to learn via Perl or you're new to Perl but know another language this book will be hard to beat. A good balance of theory and hands on with a sprinkle of some of the clearest descriptions to be found in the world of Perl documentation makes this the book I recommend as a standalone volume for learning Perl.
All views are my own and if you disagree write your own review :)