Advanced Perl Programming, 2nd Edition by Simon Cozens This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated May 1, 2006. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: (vi) headings under Chapter 5; The entry for "Categorization and Extraction" has an extra leading space. {3} Figure 1-2; the label for 'a should be *a (9), 2nd paragraph in the "Closures" sidebar: ...(it'll give you an error under use strict. should read ...(it'll give you an error under use strict). (11) very bottom of page; In the last line on the page, "conceivable" is misspelled "concievable". (17,18) Figures 1-5, 1-6; In both figures 1-5 and 1-6, "readline" is misspelled "redline". {20} 1st paragraph of section "Messing with the Class Model"; The paragraph suggests that @INC package variable is used to handle inheritance. This should be the @ISA package variable. (82), 1st code example on page: the line of "===" signs is mis-aligned. Remove all the thinspaces between "=". It should read like the following (viewed in constant-width), with each header ("ID", "Received", "From", "Subject") aligned with the start of a sequence of "===..." below it: format STDOUT_TOP = ID Received From Subject ===== ========== ======================================== ==================== . format STDOUT = @<<<< @<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<< $_->id $_->received $_->from_address $_->subject (97) second line of text; "... the Headercomponent found ..." should be "... the Header component found ..." (117), final sentence on page: misplaced comma in "well, that" change to: "It's just as well that, as with so many things in Perl, there's more than one way to do it." (139), figure 4-1: the word "Track" over the lower-right grey box should be lowercase "track". (141) Second text line after 1st code fragment; "reltionships" should be "relationships" {146}, figure 4-3: the figure was built for an old example, and is incorrect and confusing for the current example. Update figure with the following text: - In the first bubble, "/view/beer/1" changes to "/artist/edit/110". - In the third bubble, "view" changes to "edit" and "beer" changes to "artist". - In first bubble on the right, 'Load up row "1"' changes to 'Load up row "110"'. - In the second bubble on the right, "BeerDB::Beer->view" changes to "CD::Artist->edit". (187) code sample below 2nd paragraph; The last two statements of the code sample misspell "$identity" as "$itentity". (188) 4th paragraph, 2nd sentence; "Perls doesn't know..." should be: "Perl doesn't know" (195) footnote at bottom of page; "it has kernel" should be "it has a kernel". {211} subroutine definition at the bottom of the page; The subroutine defined at the bottom of the page should be named "error" instead of "not_found" for consistency with the text and code in the "A POE Web Server" section (pages 210-212). (212) 4th paragraph; Change: after awhile to: after a while {213} 1st paragraph; The code was correct for the 0.03 version of XML::RSS::Feed, but the interface has changed. The current version of the code can be seen at http://search.cpan.org/perldoc?POE::Component::RSSAggregator (215) 2nd paragraph; Kwalitee Assurance should be: Kwalitee Ashuranse {228} code sample after second paragraph; The last line of code: "push @classes if $class->isa('Test::Class');" is missing an argument to push(). The code should read "push @classes, $class if $class->isa('Test::Class');" (228): third paragraph; "That's how we define test methods and un the test,..." should be: "That's how we define test methods and run the test,..." (235) 3rd paragraph, 1st sentence; "This determines that the user's format it safe and ..." should be: "This determines that the user's format is safe and ..." (237) 2nd paragraph; Change: HV*s for arrays to: HV*s for hashes ^ (238) First paragraph after table; Note from this that arrays and 3hashes are... should be: Note from this that arrays and hashes are... (257) Line just before code snippet at bottom of page; "we can look up "e" and get (1,4), (3,4), and (4.1)." should be: "we can look up "e" and get (1,4), (3,4), and (4,1)." {257} 1st code block; The code block: my @neighbors= ... is missing the last line. The missing line is: ,[3,4],[4,3]]]); {266} code at bottom of page; In the code for whiten(), the call to tr is missing a space in the replacement list: "tr/01/\t/" should be "tr/01/ \t/" (271) Right hand column, line 18; "applications, Web (see Web appliations)" should be "applications, Web (see Web applications)"