[Kc] Book Review: Extending and Embedding Perl

Garrett Goebel garrett at scriptpro.com
Mon Mar 24 09:29:25 CST 2003


Extending and Embedding Perl
Tim Jenness and Simon Cozens

Extending and Embedding Perl is as it boldly states on the cover: "The
definitive guide to XS, embedding, and the Perl internals". This book is
well organized and information dense. One could spend days sifting through
the available perlapi, perlcall, perlembed, perlguts perlxs, perlxstut, and
h2xs documentation. After which you'll probably understand very well
references to nethack's "You are in a maze of twisty little passages all
alike". Or you could get yourself a copy of this book and find your way out
of the maze.

Most of the available documentation on extending and embedding perl is
written from the prospective of the core perl developers for core perl
developers. This book is written for advanced Perl programmers who for
whatever reason need or wish to peer into that netherworld between Perl, C,
and the glue that interfaces Perl with other languages. It is a deliberate
thorough guide led by authors that are both extremely knowledgeable and also
capable of communicating that knowledge.

While it would greatly reduce the learning curve, no prior knowledge of C is
required to read this book. This is a surprising claim and while it won't be
easy, this reader is proof that someone with little true knowledge of C can
in fact read and for the most part comprehend what the authors wish to
convey. 

There are clearly areas for improvement. Things like NULL being used
throughout chapter 3, only to finally be defined later in a footnote in
chapter 4. And other cases of terms being used before they are explained.
Things that leave the reader juggling unnecessarily until the information is
provided that lets understanding fall into place. But for the most part, if
you are a competent juggler and are patient your questions will eventually
be answered. You won't walk away a C programmer, but you will learn enough
to solve the problems which led you to consider reading this book in the
first place.

One thing I liked very much about the layout of the book is how it switches
back between presenting sections on C programming and Perl. The authors
revisit C each time it is necessary to understand the next Perl internals
topic. Those that are learning C or need the review receive the relevant
information just before it is required. 

Over the course of the book, you'll learn about interfacing from Perl to C
and C back to Perl. For those that must plug references to Tolkien in things
Perl... you can go back and rephase that into an appropriate reference to
Bilbo's book "There and Back Again". You'll also learn the perl api, data
structures for core variable types, and how to work with scalars, arrays,
hashes, strings, regular expressions, file handles, typeglobs, objects,
callbacks and PDL with C and C++. And there is even mention of working with
Fortran, Java, and more esoteric alternatives.

The book finishes with an in depth look at Perl internals: the parser,
tokenizer, op code trees, execution, and compiler. And closes with a
discussion of the Perl development process: How it may be monitored and
participated in.

What's missing? Detailed coverage of the I/O subsystem and the regular
expression engine. I.e., topics which might themselves make for a good book.
There was also light coverage on things like scratchpads. There were times
while reading when I didn't know whether the issue being discussed was fully
covered or curtailed. But you will certainly find better coverage of the
issues in this book than elsewhere. This is an impressive book. I hope it
will greatly influence the way Perl6 internals are documented.

-- 
Garrett Goebel 
IS Development Specialist 
ScriptPro                  Direct: 913.403.5261 
5828 Reeds Road            Main: 913.384.1008 
Mission, KS 66202          Fax: 913.384.2180 
www.scriptpro.com          garrett at scriptpro dot com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/kc/attachments/20030324/617ee40b/attachment.htm


More information about the kc mailing list