This book is as dog-eared as my Perl 4 camel book.
O'Reilly claims a desire to salve the world's pain, for this they can
offer no better evidence than the monkey book.
Expect often solves niggly heart-breaking system integration problems.
Many times, clean digital data cannot cross the chasm between systems
and must be re-typed. Nearly always, the impulse is to "get the
computer to do the re-typing".
I have successfully followed this impulse with Expect's help on a
couple of medium-scale integration problems.
At the same time I looked at competing techniques in Macro languages
associated with telnet clients.
Expect is much better as an implementation than the commercial
alternatives. It is (comparatively) solid, robust, and
well-thought-out. I would always choose Expect for a system unless its
solution was trivial with the commercial tools.
(I will admit to using Expect.pm and Telnet.pm with pleasure however:
Perl does have some modules that are sometimes effective as
replacements for Expect.)
This book covers many of the issues involved in making computers act
like humans. With wit and care, Don explicates examples both small and
large that cover many of the issues that come in these situations.
I have not found equivalent depth of knowledge anywhere else.
A few nits.
1. Tcl drives me crazy on larger systems. I cannot find practices that
structure it. I cannot guess correctly about scope of variables. Tcl
does not complain soon enough to catch my ham-fisted attempts to make
it act like other languages.
Perhaps I am not flexible enough, but I suspect others will join me in
a preference for more structure and types even at the cost of some
2. I used one of Don's examples (dislocate/kibitz) to drive some
collaborative help systems on a public library catalog. I had to do
work to make it multi-user and there were issues with potential
different VT terminal sizes that were not addressed in the book.
This comes from the nature of the world of collaborative software. Few
standards are followed to a useful degree in the wide open Internet.
Don does not try to solve all the problems that come up in
3. I tried to make the specified telnet server work over many different
telnet clients, without success. I tried the obvious port redirection
with telnet, also without success.
Some things just do not work when they should. The standards are not
followed (telnetd) or subtleties in there implementation are not clear
Read the book if you do system integration. Enjoy the book if you like
to stretch your (recent) linux or BSD box using the utilities you use
Time-stamp: "2000-08-11 08:05:49 raleigh"