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.
The following is a list of reviews of PWSWP from various sources. Please let me know of any other reviews I may have missed:
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:
Replace "book happen" with "book to happen".
Replace "the previous explanation of namespaces" with "the example of namespaces in Example 2-1".
Replace "don't" with "doesn't".
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".
Replace "don't" with "doesn't".
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.
Replace "at once" with "both".
In the "<element>" declaration, "type" attribute, "CodeModule" should be "SoftwareModule".
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.
Replace "XML-RP-compliant" with "XML-RPC-compliant".
Replace "Example 3-8" with "Example 3-5".
Replace "resolve_name" (in the error message) with "get_data".
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.
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.
In absence of the RPC::XMLSimple module, install Frontier::RPC2 instead and change "RPC::XMLSimple::Client" to "Frontier::Client".
Replace "RPC::XMLSimple::Daemon" with "Frontier::Daemon" in the "use" statement in the 4th line of Example 4-2.
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".
The script should start with the line, "#!/usr/bin/perl -w" before the first line of actual code.
The script should start with the line, "#!/usr/bin/perl -w" before the first line of actual code.
Append " -w" after "perl".
This and similar reports later are for consistency with other code examples.
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
Replace "maito" inside the string passed to sprintf with "mailto".
Append " -w" after "perl".
Append " -w" after "perl".
Append " -w" after "perl".
The last character of this line, ">", should be replaced with "/>" in order to make it valid XML.
Replace "soap:address" with "http:address".
Replace "thought" with "though".
Replace "is the usually the" with "is usually the".
Append " -w" after "perl".
The declaration, "my $results", should be "my $result".
Replace "more" with "most".
Replace "different" with "difference".
Replace "out of hand" with "out-of-band".
Replace "sequence," with "sequence" (remove the comma).
Replace "#!perl" with "#!/usr/bin/perl".
This and the identical changes later are for consistency with other code examples.
Replace "#!perl" with "#!/usr/bin/perl".
Replace "#!perl" with "#!/usr/bin/perl".
Replace "Description" with "Definition".
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.