Learning Perl, 2nd Edition by Randal L. Schwartz and Tom Christiansen Here are the changes made in the 10/99 reprint: (18) Used to read: If you were running with -w, you would have to check that the return value read in was actually defined. The empty string returned by the operation isn't merely empty: it's undef again. The defined function is how you test for undef when this matters. When reading lines from a file, you'd do the test this way: while ( defined ($name = ) ) { Now reads: If you were running with -w, you would have to check that the return value read in was actually defined. The empty string returned by the operation isn't merely empty: it's undef again. The defined function is how you test for undef when this matters. When reading lines from a file, you'd do the test this way: while ( defined ($name = ) ) { (39) Added footnote missing from 5/99 reprint. It now reads: Hex and octal values are not supported in this automatic conversion. Use hex and oct to interpret hex and octal values. (33) In the paragraph under Single-Quoted Strings, "single-quoted string" in the second-to-last sentence was changed to "double-quoted string." But the examples following this sentence still show a backslash within a single-quoted string, and the whole section is about "Single-quoted strings". Changed it back. {49.4.2} Used to read: (1.2 .. 5.2) # same as (1.2, 2.2, 3.2, 4.2, 5.2) Now reads: (1.2 .. 5.2) # same as (1, 2, 3, 4, 5) {49.6.1} Used to read: (1.3 .. 6.1) #same as (1.3,2.3,3.3,4.3,5.3) Now reads: (1.3 .. 6.1) #same as (1, 2, 3, 4, 5, 6) {85} The code was incorrectly changed in the 7/98 reprint to read "l" (letter el) instead of "1" (number one). It has been changed to (letter L capitalized only to emphasize it): $a =~ /(.)\1/; # also true (matches the double L) {231} In the answer for Question 3, "for (sort by_last keys %last) {" Now reads "foreach (sort by_last keys %last) {"