Learning Perl on Win32 Systems by Randal Schwartz, Erik Olson, and Tom Christiansen 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. This page was updated July 08, 2002. 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 UNCONFIRMED errors and comments from readers: {9} 3rd paragraph: the link to the Perl-for-Win32 FAQ, http://www.endcontsw.com/people/evangelo/Perl_for_Win32_FAQ.html, is not dead; it's been taken over by a porn site. {24} The while statement in the sample program is missing the second closing parentheses, ")". [39] Last paragraph; Ref: 12/98 Printing: "... and hex numbers start with a leading 0x or 0X." Tried two different versions of Perl and neither allowed the upper case "0X". (45) 1st footnote; * Asssuming... should be: * Assuming... {47} (under "Scalar Variables") replace: "Scalar variable names begin with a dollar sign followed by a letter, and then..." with: "Scalar variable names begin with a dollar sign followed by either a letter or an underscore, and then..." {60} 6th paragraph; The following statement is false: "Assignment to an array element with a subscript of less than 0 is a fatal error, because it is probably the result of Very Bad Programming Style." I successfully ran the following script: use strict; my @fred = qw(apple orange pear mango); $fred[-2]="pineapple"; print("@fred"); With the following results: D:\Win32Perl>go apple orange pineapple mango {73} (under "Hash Variables") replace: "A hash variable name is a percent sign (%) followed by a letter, followed by zero or more letters, digits, and underscores" with: "A hash variable name is a percent sign (%) followed by either a letter or an underscore, followed by zero or more letters, digits, and underscores" {147} First code sample; This code will only work for me if I change the second line from unless chmod(0666,$file) { to unless (chmod(0666,$file)) { (I am executing this on a Unix server, but I don't think it would make a difference. I am new to Perl.) {153} first footnote: The footnote refers the reader to section 8 of the Perl FAQ "How can I capture STDERR from an external command?" Since the is a win32 book, it appears that the Perl FAQ that describes this topic does not apply, as the FAQ describes the bourne shell. {166} Exercise 1: The terms "backslash" and "slash" are used interchangeably, while these represent distinctly different characters, "\" and "/". The answer on page 236 also conflicts with the stated exercise in that the answer looks for a "/" and not a backslash as the exercise stipulates. [192] 2nd program: should be . [329] the first complete programming example (answer to ch7 exercise 2c); If I understood the exercise correctly, we were to match aeiou in order regardless of intervening characters, except that no vowel can be preceded by the one that comes next in the alphabet. The solution provided: while () { if (/[^eiou]*a[^iou]*e[^aou]*i[^aeu]*o[^aei]*u[^aeio]*$/i) { print; } } Is the first thing I tried, and it fails. Eaeiou matches because the a is preceded by zero or more characers that arent eiou. This works for me: while () { if (/a.*e.*i.*o.*u/i && !/e.*a/i && !/i.*e/i && !/o.*i/i && !/u.*o/i) { print; } }