Dec 97 Bookshelf
Volume Number: 13
Issue Number: 12
Column Tag: Programmer's Bookshelf
A Brief Look at Two Books About Perl:
"Learning Perl" and "Perl 5 for Dummies
by Paul A. Collins, One Click Systems
Okay, Perl may not be the first language that comes to mind when you think of
Macintosh software development. Yet its powerful text-processing abilities and
no-nonsense syntax make Perl a very useful language to know. It supports OOP, is
handy for a one-time app to convert a file, is "write-once, run-almost-anywhere
today, and can be indispensable for web server CGIs on any platform.
Fortunately, there is an excellent Macintosh implementation of Perl 5, MacPerl,
ported by Matthias Neeracher (Perl was created by Larry Wall). It even includes a
standard file dialog module for your document handling convenience. Beyond running
Perl apps on a Mac, it makes a good development platform for creating CGIs and other
apps intended to run on, say, a Unix-based web site. MacPerl even has some support
for AppleScript and XCMDs.
To get you started, two good Perl tutorial books are Learning Perl by Randal L.
Schwartz and Tom Christiansen and -- no kidding -- Perl 5 for Dummies by Paul E.
Hoffman.
Learning Perl (a.k.a. The Llama Book) contains the best chapter-length introduction to
a language I've ever seen. Within 30 pages I felt I knew just what the language was
about and 90% of what I needed to write a dozen different apps. It starts with a
one-line "Hello World" app, then builds it up little-by-little into a 80-line
login-and-guess-the-secret-word database system, introducing the major concepts of
Perl by example. The writing style is concise but complete. In 269 pages they cover
language structure and syntax, I/O, regular expressions, files and directories,
databases, and text formats. The second edition adds a chapter on CGI programming.
Many references are made to Unix functions and conventions, but they are clear enough
to be understood without knowing Unix.
Programming Perl, available from the same publisher, is more advanced,
comprehensive -- a language reference -- and one huge book. It is very highly
regarded, but I haven't needed it for my CGI projects.
Perl 5 for Dummies is surprisingly intelligent. The
"programming-for-non-programmers" parts are easy to skip over, and Hoffman
clearly documents detailed aspects of the language without being too cute. The
introduction to regular expressions (probably the most complex, bewildering, yet
powerful part of Perl) is understandable after a couple of readings -- high praise for
any description of this arcane syntax.
Hoffman covers MacPerl installation, advantages, and differences from other Perls --
and he writes like a Mac user. Mac topics include "MacPerl: The Mac Interface You
Expect," "Opening files is more fun on the Mac," and "Controlling a Mac with MacPerl
(covering Mac-specific file and other functions). "Ten Really Short, Really Useful
Perl Programs" contains some gems. "The Great Perl Reference" almost lives up to its
name. The alphabetical function list is fine, but the list by chapter should have
specified categories and page numbers. Don't miss his "Ten Reasons Why Perl is Better
Than Java.
Perl 5 for Dummies is 381 pages and includes a CD ROM containing MacPerl v5.10r2
(as well as Unix and Win32 versions), plus the CPAN script library (as of December
'96). CPAN is a huge FTP library of Perl modules and objects from around the world.
There are many aspects of Perl these introductory books don't cover, but by the time
you've mastered either or both of them you can rely on Perl's extensive on-line
documentation. This is available in "POD" (Plain Old Documentation) format on the
Perl 5 for Dummies CD and other formats are available by FTP (including html).
Unfortunately, Shuck, the POD reader bundled with MacPerl, crashed several times
under Mac OS 8. Mac OS 8 users will have to download the documentation in another
format.
URLs
MacPerl is available on many CPAN FTP sites. For a list, see the MacPerl Homepage
http://err.ethz.ch/~neeri/macintosh/perl.html or the CPAN/ports directory
http://language.perl.com/CPAN/ports/. Documentation in HTML and other formats can
be downloaded from http://language.perl.com/info/documentation.html.
Books
• Learning Perl, Second Edition by Randal L. Schwartz and Tom
Christiansen, July 1997, O'Reilly & Associates, Inc., ISBN:
1-56592-284-0.
• Perl 5 For Dummies by Paul E. Hoffman, 1997, IDG Books Worldwide,
Inc., ISBN: 0-7645-0044-9.
______________________________
Lyn Dupre's "BUGS in Writing
by Michael Rutman, independant consultant
Not that long ago, my writing was awful. No matter how hard I struggled, my memos
and internal documents were difficult to read. I took a rhetoric course in college, and I
have read the rhetoric manuals, and other guides on style, but they never helped. I've
had documentation people try to work with me, but they could never explain what I was
doing wrong. Fortunately, I was paid to write code, not memos, so nothing was said.
Then I read Lyn Dupre's book, and in two weeks, my writing was vastly improved. The
current editor of MacTech, who worked with me before I read Bugs in Writing, was
shocked that my writing could improve that much in only 2 weeks.
Most books on prose seem to be authored by people who have never written a bad
sentence in their life. While it is great that they know their topic, it doesn't work for
me. I always feel out of my depth, and their examples never click in my mind. Lyn
Dupre, on the other hand, feels that computer people need their lessons in a different
way. Importantly is an adverb, and you should use it as such, to modify a verb. It
means to take a given action in an important manner.
In her book, she formats each lesson in 1 to 5 pages. Lessons can be read in any order,
and all of them are short enough that leaving the book in the bathroom works well.
Each lesson includes good and bad examples. By showing a bad example next to a good
example, readers can see exactly what is meant.
For example, in lesson 101, the book discusses the word importantly:
Many people write importantly (an activity modifier, or an adverb) when they mean
important (an object modifier, or an adjective). You should tune your ear to catch this
error, because a portion of your audience will find the mistake intensely annoying.
BAD: Importantly, the algorithm cannot handle situations with a large state space.
GOOD: Sarah walked importantly in her cheetah bathing suit. Important is the word
that you should use in all other cases.
BAD: Importantly, Max forgot to shut the door when he left the house, resulting in an
influx of racoons.
GOOD: Most important, remember to provide fresh food and water, and much petting,
for your cats.
This lesson actually has 15 examples. In addition, there are 3 footnotes mentioning
other points to help readers understand what makes one word good and another bad.
Some of her examples are technically correct, but ugly. Whenever she uses an ugly
example, she explains why it is ugly and how to avoid ugly but technically correct
phrases.
My favorite parts of this book are the examples. Many examples involve computers,
but they also involve her pets and friends. While I am sure they are contrived, they at
least sound like sentences I would write.
Other lessons include correct use of the words "since," "also," "either" and "both,
"only," and many others. She also talks about adverbs and adjectives, full and
incomplete infinitives, nonarriving agents, and just about any other topic you can
think of. Not all of the lessons are on words, some are on overall style. For example,
she talks about how to write proposals, abstracts, dissertations, and also deals with
writers' block. If there is any failing of the book, it is the lack of an index.
For anyone that wants to be understood when they write, I recommend you go out and
get this book today.
• BUGS in Writing, by Lyn Dupre, 1995, Addison-Wesley Publishing
Company, ISBN: 0-201-60019-6.
______________________________
Paul A. Collins, paul@oneclick.com, owner of One Click Systems, would like to
finish up the Perl-based sales-and-download section of his web site and get back to
enhancing his commercial email gateway, ClickMail® http://www.oneclick.com/.
Michael Rutman, moose@manicmoose.com, is a software developer with experience
developing for several platforms, including Macintosh, NeXTSTEP, Newton, Pilot, and
Windows NT. While working at Software Ventures, he lead the development of Snatcher
and MicroPhone Pro for NeXTSTEP. He also worked on the MicroPhone Pro for
Macintosh product line. He now works as an independant consultant on a variety of
projects including encryption, compilers, web based add-rotation software, and ship
stevedoring.