ERRATA
for
Scripting with Objects




Entries made on December 18, 2010:     pages 74, 75, 111, and 887

Entries made on August 2, 2012:     pages 115 (two entries), 151, 547, 780, and 862

Entry made on August 12, 2013:     page 131

Entries made on June 15, 2015:     pages 239 (two entries), 704, 1091

Entry made on January 28, 2016:     page 68

Entries made on February 7, 2018:     pages 934 (two entries), 937, 941







Page 68:   Second line after the code line in upper half of the page
line as currently set: array @ARGS. The line input operator <> would then read from these files named in
corrected version: array @ARGV. The line input operator <> would then read from these files named in


Page 74:   Second line from the top of the page
line as currently set: is presented in Section 2.9.4.)
corrected version: is presented in Section 2.9.3.)
The above error was reported by Lakhinder Walia (lakhindr at yahoo.com)


Page 75:   Second line from the bottom of the page
line as currently set: my $buf;                #(E)
corrected version: my $buff;               #(E)
The above error was reported by Lakhinder Walia (lakhindr at yahoo.com)


Page 111:   Line 9 from the top of the page
line as currently set: (eq, neq, lt, le, gt, ge) happen to be nonstrings. Perl will try to interpret the
corrected version: (eq, ne, lt, le, gt, ge) happen to be nonstrings. Perl will try to interpret the


Page 115:  middle of the page
three lines as currently set: out the accumulator in line (H). We see that the last field spit out by the accumulator
is truncated. That is for reasons explained in Problem 8 in the Homework section of
Chapter 4.
Just to show another way of calling formline(), our Example 4 parallels
corrected version: out the accumulator in line (H). We see that the field values spit out by the accumulator
are truncated. Just to show another way of calling formline(), our Example 4 parallels


Page 115:  Footnote 66 at the bottom of the page
Delete the footnote numbered 66 at the bottom of the page. At the time of final production, the problem referred
to in the footnote was dropped from the book manuscript.



Page 131:  Seventh line from the bottom of the page
line as currently set: As briefly mentioned in Section 2.9.4, when a global variable is declared local, its
corrected version: As briefly mentioned in Section 2.9.3, when a global variable is declared local, its



Page 151:  First line at the top of the page
line as currently set: die "file $filename has zero size\n" if -s $filename;
corrected version: die "file $filename has zero size\n" unless -s $filename;



Page 239:  The four lines after the code statement in the middle of the page
the four lines as currently set: causes the parent class's __add__ to be invoked for the addition operation. This
syntax also ensures that if this operation were to return any object at all, it will be an
instance of the subclass type, that is of type size_limited_int.64 Finally, line (J)
forces a range check on the result returned by the addition operation in line (I).
corrected version: causes the parent class's __add__ to be invoked for the addition operation. The
object returned by this call in our example is of type int.64 Finally, line (J) casts
the returned object to an object of type size_limited_int and, through this
step, forces a range check on the value of res.
The above error was reported by Jean-Michel Fourquie from microvision.com

Page 239:  The last two lines of the footnote 64 at the bottom of the page
the last two lines of the footnote
as currently set:
but now the object returned by the addition operation would be of type int as opposed to
size_limited_int.
corrected version: This syntax invokes a method of a specific class, as opposed to initiating search for the
designated method in the inheritance tree that converges on the subclass in question.
The above error was reported by Jean-Michel Fourquie from microvision.com


Page 547:  Second line of the last paragraph
line as currently set: nothing with class X. But then in line (I) we assign a value to X.foo even though
corrected version: nothing to do with class X. But then in line (I) we assign a value to X.foo even though


Page 704:  Second line of the second paragraph
line as currently set: ception handler. This is, the handler that does not name an exception class in the
corrected version: ception handler. That is, the handler that does not name an exception class in the


Page 780:  Code line labeled (F) in the middle of the page
line as currently set: mw2.title( "First Window" )                                 #(F)
corrected version: mw2.title( "Second Window" )                               #(F)


Page 862:  Fifth line from the top of the page
line as currently set: concurrency bit it will be limited by the poor quality of thread cooperation. Thread
corrected version: concurrency but it will be limited by the poor quality of thread cooperation. Thread


Page 887:  First line of the second paragraph
line as currently set: @dataObj in line (I) of NoInterference.pl for the elimination of interference.
corrected version: @dataObj in line (I) of NoThreadInterference.pl for the elimination of interference.


Page 934 (first of two corrections):  Just above the first code line on the page
line as currently set: script. Next the server tries to find the URL of the client by the statement in line
corrected version: script. Next the server tries to find the symbolic hostname of the client by the statement in line


Page 934 (second of two corrections):  Just above the second code line on the page
TWO lines as currently set: and returns an array reference; the first element of this array is the client URL. The
URL can be retrieved either by accessing directly the first element of this array or by
corrected version: and returns an array reference; the first element of this array is the client symbolic hostname. The
symbolic hostname can be retrieved either by accessing directly the first element of this array or by


Page 937:  The ending line for Section 15.4.1
line as currently set: whether or not any particular port is available for a server application.
corrected version: whether or not any particular port is available for a server application. You can experiment
with this server script by using for the client side the script shown in Section 15.3.1.


Page 941:  The ending line for Section 15.4.2
line as currently set: apply here.
corrected version: apply here. You can experiment with this server script by using for the client side the script shown in Section 15.3.2.


Page 1091:  Code lines labeled (a) and (b) in the middle of the page
lines as currently set: def ShallowParse(XML_document)                                                         #(a)
return re.findall(XML_SPE, XML_document)                    #(b)
corrected version:
(the second line needs to
be indented vis-a-vis the first)
def ShallowParse(XML_document)                                                         #(a)
          return re.findall(XML_SPE, XML_document)                         #(b)



Last updated: February 7, 2018

Valid HTML 4.01 Transitional Valid CSS!