Advanced programming in Perl
INTRODUCTION
I have mixed feelings about this book.
I was looking for a book about Perl internals,
which would go a little bit further than the
Camel and which would be a little bit easier to grapple with than Perl sources.
This book partially met my expectations.
I found an interesting book on several accounts, with an excellent technical level but some aspects (which I'll detaill below) noticeably reduce this book's value.
PRESENTATION
Advanced programming in Perl includes 412 pages.
It's broken up into 20 chapters :
- Data References and Anonymous Storage
- Implementing Complex Data Structures
- Typeglobs and Symbol Tables
- Subroutine References and Closures
- Eval
- Modules
- Object-Oriented Programming
- Object Orientation: The Next Few Steps
- Tie
- Persistence
- Implementing Object Persistence
- Networking with Sockets
- Networking: Implementing RPC
- User Interfaces with Tk
- GUI Example: Tetris
- GUI Example: Perlman
- Template-Driven Code Generation
- Extending Perl: A First Course
- Embedding Perl: The Easy Way
- Perl Internals
And 2 appendices :
- A. Tk Widget Reference
- B. Syntax Summary
REVIEW
I don't understand the logic of this layout, and it seems a bit 'disjointed'.
Chapters are, to my mind, quite uneven, some are excellent, others are less good.
Some areas are VERY (too much?) detailed, like the whole chapter 5 about Eval for example,
or the 3 chapters about the GUI.
More than the topics presentation order,
It's their interest (varied) and the reasons why they were choosed that bother me.
Whatever the author say to justify his choices (these topics were choosed beccause they're what a programmer SHOULD know),
the choice seems arbitrary, and to say the least questionable.
(No chapter about Security ? Sorting ? Obfuscation ?...)
Aside from the above subjective issues, I have 4 specific complaints :
- It's not written by a Perl programmer but by someone who knows Perl well.
This detail is important - I haven't found any passion in this book, hence a book which fails to captivate...
(As opposed to the Camel, which remains gripping from the beginning to the end...)
- More disturbing, some style mistakes seems harmful to me :
- Written in 1998, it's beginning to show it's age
With some information on threads and ref incomplete for example...
- A tendency from the author to present his modules instead of the 'standard' ones.
But everything isn't bad in this book :
On the good side, we'll notice:
- The style, clear and efficient.
- The comparison between Perl and other languages (C++,Java,Tcl,Python) at the end of each chapter, which is interesting and objective.
- The 20th chapter will provide answers to many questions you might have about about Perl internals
(As long as you have some notions in C).
- The pointers to other source of information at the end of each chapters, always usefull.
- The 3rd Chapter, about typeglobs and symbol tables which is VERY enlightning while remaining clear.
(To be able to understand, for example, why my is faster than local)
- The tackling of some topics usually not considered although interesting : Serialization, the DIFFERENT tie uses.
- The excellent overal quality of the book :
With very few typos and printing mistakes (just a footnote placed on the next page, at the page 17)),
And an excellent translation, I mean one you just don't notice (I've only found one translation error in all the source codes(page 271))
CONCLUSION
This book remains a good book about Perl, less exciting than the
CamelBook, less practical than the
CookBook,
nonetheless, it contains excellent and detailed information, while being clear and easy to read.
However I just can't refrain from imagining what this book would have been if it would have been written by a Perl fanatic...
And dreaming...
(How long until a book written by our saints?)
;-)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.