Perl in a Nutshell, 2nd Edition by Stephen Spainhour, Ellen Siever, Nate Patwardhan The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. 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 This page was updated April 18, 2007. UNCONFIRMED errors and comments from readers: [1] 1; Does not document the ithreads interface (threads.pm, threads/shared* etc.) Does not mention Pod::Usage either. Both are in Perl 5.8 [43] Endemic; minor omission rather than an error. Chapter 4 does not give the definition or syntax of a slice. (45) Examples for Number formats; As of Perl 5.6 and higher, the binary-format (leading 0b) is supported and should be mentioned. Example: 0b1110 means decimal 14. [51] Code example of while block; Within the example of the "while loops" the line print OUTFILE, "$_\n"; should read print OUTFILE "$_\n"; that is without the comma. [53] Code example of Loop control; The statements within the loop print; next LINE if /^#/; # Discard comments should be swapped: next LINE if /^#/; # Discard comments print; Otherwise the next statement has no effect (besides evaluation of /^#/) (55) First Paragraph; The Global special variable for LIST_SEPATATOR is shown as $ or $LIST_SEPARATOR , there is no mention of $". (58) last paragraph; Original text: $' $POSTMATCH Should be: $` $POSTMATCH or at least I think so. I'm just getting into Perl (that's why I bought the book!). Basically the apostrophe (ascii 0x27) should be an open single quote (ascii 0x60). {66} First item under "Pattern-Matching Operators"; In the modifiers listed for pattern match: m/pattern/gimosxe The 'man perlop' documentation for 5.8.6 still mentions the m//cg combination which is missing here. (The incorrect "e" modifier already mentioned in earlier errata). {70} In the table under "Anchors"; The entry \c seems to be unique to this manual and its description mentions \g which is also unique. I'm guessing this entry shouldn't be here at all and what's really being discussed is m//cg vs. m//g (i.e. modifiers, not anchors.) {72} Lines 4 & 5; Two of the backreferencing variables listed S' and S` actually function in the opposite manner than that presented. They currently read: S' Returns everything before the matched string. S` Returns everything after the matched string. They should correctly read as follows: S' Returns everything AFTER the matched string. S` Returns everything BEFORE the matched string. Also line 5 indicates a grave'(sp?) instead of the correct "back tick". It causes you to pause and have a good look around your keyboard to see where you misplaced that key if you're trying to type it as indicated :) Page 36 of the 3rd edition of the Perl 5 Pocket Reference stands in agreement with the above findings and observations as a sanity check. [72] paragraph beginning with (? \%defines); When used with command line options: --define os=linux --define vendor=redhat the hash `%defines' will contain two keys, `"os"' with value `"linux' and `"vendor"' with value `"redhat"'. It is also possible to specify that only integer or floating point numbers are acceptible values. The keys are always taken to be strings. (316) Pod:: Module listing; The Module "Pod::Usage" should be listed. This is an important module for auto generation of usage, help and manpage output. For detailed input see "man Pod::Usage". (336) in the Switch pragma; The double quotes are all curly quotes, instead of straight quotes. (437,439) Right edge of the page; The text in the black box at the right edge of the page reads "XML and SOAP" but the chapter is "SOAP". (527) Request example; Example use LWP::UserAgent; # This will cover all of them! $hdrs = HTTP::Headers->new(Accept => 'text/plain', User-Agent => 'MegaBrowser/1.0'); $url = URI::URL->new('www.ora.com/index.html'); Should read use LWP::UserAgent; # This will cover all of them! $hdrs = HTTP::Headers->new('Accept' => 'text/plain', 'User-Agent' => 'MegaBrowser/1.0'); $url = URI::URL->new('http://www.ora.com/index.html'); (726) right column of index; "rotocols_forbidden()" should read "protocols_forbidden()" (726) Bottom of the page under "Q"; There's an index entry: q// pattern match operator, 66, 124 But there's no mention of q// on page 66, but there is a discussion of qr// This probably should be two entries, something like: q// regexp quote-like operator, 124 qr// regexp quote-like operator, 66