Programming Web Services With Perl
The home-page for code samples, questions, errata and general links

Let there be no suspense: my advice is that, if you're programming Web services, you should have a copy of Programming Web Services with Perl on your desk — even if your own programming isn't in Perl. – Cameron Laird

Programming Web Services With Perl, by Randy J. Ray and Pavel Kulchenko, was released in December of 2002, published by O'Reilly & Associates. The Library of Congress ISBN number for the book is 0-596-00206-8.

Book-Specific Links
Web Services/Perl Links

Reviews

The following is a list of reviews of PWSWP from various sources. Please let me know of any other reviews I may have missed:

Errata

No matter how diligent the process of general editing, technical editing, or simple re-reading, errors still make it through to the final copy. The following are the currently-known errata against PWSWP. For each item, a categorization is given. These are defined as follows:

Label Meaning
CLARIFICATION This category of change is meant simply to clarify a sentence, passage or section that may otherwise be obfuscated or ambiguous.
CORRECTION If this marking is given, the change represents the correction of an error, usually typographic in nature. This is generally applied to code examples or XML fragments. Language corrections fall under the next heading (the exception being if an acronym is expanded incorrectly, the correction would have this tag.)
GRAMMAR This tag is used to mark those changes that represent corrections to the grammatical structure of the sentence or phrase, and other text-based issues.
UPDATE This denotes an update to information that is tangential to the book itself, such as issues around software release dates or W3C specification decisions.

A note regarding the errata that refer to the "-w" flag of the Perl binary: It is generally a good idea to have this on applications when trying out new concepts and ideas. All the code in the book should have had this set in the text examples, and all the code distributed in the bundled examples does have it included. The errata items bring the text in line with the code itself.

Within the following table, the location of errata is given by page number, followed by one or both of paragraph and line. If paragraph is not specified, then the line count runs from the top of the page. If a paragraph is given, the line count is limited to within the paragraph. When counting lines or paragraphs down the page, skip all section and example headings or titles. If a correction is made to one of these, it will be more explicitly pointed out in the text. Generally, the only time that a paragraph is not specified is when the errata lies within a code or XML example, where counting paragraphs has no real meaning. The current errata are:

Page: xiii
Paragraph: 5
Line: 2
GRAMMAR

Replace "book happen" with "book to happen".

Page: 17
Line: 2
CLARIFICATION

Replace "the previous explanation of namespaces" with "the example of namespaces in Example 2-1".

Page: 21
Paragraph: 3
Line: 6
GRAMMAR

Replace "don't" with "doesn't".

Page: 23
Paragraph: 2
GRAMMAR

The second bullet point may sound confusing, as "XML Schema" is also its own plural, much like "sheep" and "cannon". To clarify the language, replace "XML Schema don't" with "An XML Schema doesn't".

Page: 26
Paragraph: 5
Line: 2
GRAMMAR

Replace "don't" with "doesn't".

Page: 28
CORRECTION

In table 2-8, the word "Choice" (second row, first column) should be all lower-case as it is a keyword in the XML Schema language.

Page: 28
Paragraph: 3
Line: 1
GRAMMAR

Replace "at once" with "both".

Page: 30
Line: 8
CORRECTION

In the "<element>" declaration, "type" attribute, "CodeModule" should be "SoftwareModule".

Page: 40
Paragraph: 1
Line: 5
CLARIFICATION

Replace "content-encoding" with "content encoding".

The hyphen implies the "Content-Encoding" HTTP header, and here I am referring instead to the general concept of content encoding.
Page: 40
Paragraph: 3
Line: 6
CORRECTION

Replace "XML-RP-compliant" with "XML-RPC-compliant".

Page: 42
Paragraph: 2
Line: 3
CORRECTION

Replace "Example 3-8" with "Example 3-5".

Page: 47
Line: 33
CORRECTION

Replace "resolve_name" (in the error message) with "get_data".

Page: 52
Paragraph: 3
UPDATE

As of this current errata update, the RPC::XMLSimple package has not yet been released to CPAN. Until it is released, none of the examples using this module can be run as presented. In general, they should work if the Frontier::RPC2 package is installed, and all classes that begin with "RPC::XMLSimple::" are changed to "Frontier::". Everywhere you read "RPC::XMLSimple::<something>" you should replace that with "Frontier::<something>". Further errata points will be created only for actual code samples, to ensure that they can be run.

Page: 53
Line: 24
CORRECTION

The script should start with the line, "#!/usr/bin/perl -w" before the first line of actual code.

This and similar reports later are for consistency with other code examples.
Page: 53
Line: 25
CORRECTION

In absence of the RPC::XMLSimple module, install Frontier::RPC2 instead and change "RPC::XMLSimple::Client" to "Frontier::Client".

Page: 57
CORRECTION

Replace "RPC::XMLSimple::Daemon" with "Frontier::Daemon" in the "use" statement in the 4th line of Example 4-2.

Page: 57
CORRECTION

Replace "RPC::XMLSimple:Daemon" with "Frontier::Daemon" in the static constructor invocation in the 5th line of Example 4-2. Also note that there should have been two colons between "XMLSimple" and "Daemon".

Page: 59
Line: 16
CORRECTION

The script should start with the line, "#!/usr/bin/perl -w" before the first line of actual code.

Page: 68
Line: 4
CORRECTION

The script should start with the line, "#!/usr/bin/perl -w" before the first line of actual code.

Page: 115
Line: 20
CORRECTION

Append " -w" after "perl".

This and similar reports later are for consistency with other code examples.
Page: 120
Line: 30
CORRECTION

Append " -w" after "perl".

Page: 146
Line: 10
CORRECTION

Append " -w" after "perl".

Page: 151
Line: 27
CORRECTION

Append " -w" after "perl".

Page: 157
Line: 16
CORRECTION

Append " -w" after "perl".

Page: 165
Line: 26
CORRECTION

Append " -w" after "perl".

Page: 166
Line: 25
CORRECTION

Append " -w" after "perl".

Page: 168
Line: 20
CORRECTION

Append " -w" after "perl".

Page: 170
Line: 1
CORRECTION

Append " -w" after "perl".

Page: 171
Line: 18
CORRECTION

Append " -w" after "perl".

Page: 172
Line: 20
CORRECTION

Append " -w" after "perl".

Page: 172
Line: 29
CORRECTION

Replace "maito" inside the string passed to sprintf with "mailto".

Page: 174
Line: 9
CORRECTION

Append " -w" after "perl".

Page: 175
Line: 6
CORRECTION

Append " -w" after "perl".

Page: 176
Line: 23
CORRECTION

Append " -w" after "perl".

Page: 186
Line: 32
CORRECTION

The last character of this line, ">", should be replaced with "/>" in order to make it valid XML.

Page: 203
Paragraph: 2
Line: 3
CORRECTION

Replace "soap:address" with "http:address".

Page: 213
Paragraph: 9
Line: 5
GRAMMAR

Replace "thought" with "though".

Page: 215
Paragraph: 2
Line: 1
GRAMMAR

Replace "is the usually the" with "is usually the".

Page: 232
Line: 3
CORRECTION

Append " -w" after "perl".

Page: 232
Line: 9
CORRECTION

The declaration, "my $results", should be "my $result".

Page: 237
Paragraph: 1
Line: 6
GRAMMAR

Replace "more" with "most".

Page: 245
Paragraph: 4
Line: 2
GRAMMAR

Replace "different" with "difference".

Page: 247
Paragraph: 4
Line: 5
CORRECTION

Replace "out of hand" with "out-of-band".

Page: 251
Paragraph: 2
Line: 4
GRAMMAR

Replace "sequence," with "sequence" (remove the comma).

Page: 253
Line: 24
CORRECTION

Replace "#!perl" with "#!/usr/bin/perl".

This and the identical changes later are for consistency with other code examples.
Page: 274
Line: 9
CORRECTION

Replace "#!perl" with "#!/usr/bin/perl".

Page: 274
Line: 19
CORRECTION

Replace "#!perl" with "#!/usr/bin/perl".

Page: 297
Line: 1
CORRECTION

Replace "Description" with "Definition".

Page: 431
Line: 9
CORRECTION

Append " -w" after "perl".

The errata list is also available as plain text.

The table of errata is produced using a simple XML representation of the collected data from O'Reilly & Associates, reader feedback, and my own reading of the final published copy. It is transformed into a XHTML fragment using an XSLT stylesheet and the Xalan-J XSLT engine, version 2.5.1. The raw errata XML may be downloaded here, and the XSLT stylesheet used to generate the XHTML fragment may be downloaded here. The stylesheet used to render into plain text utilizes several recipes from the O'Reilly & Associates volume, XSLT Cookbook, by Sal Mangano. The text-producing XSLT template may be downloaded here.


Valid XHTML 1.0! Valid CSS!