That's probably because you added a couple of lines to his script. I know it's probably a good idea to turn on all the warnings, but the script does work without the -w switch and diagnostics in a way that demonstrates his point.
-----Original Message----- From: david wright To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: 2/4/02 11:12 PM Subject: Why localize $_, was-> Re: why shift @_ ? Bompa wrote: "I wrote a script to demonstrate how the value of $_ could get changed unexpectedly. (It took me an hour, but I learned from it, heh). use strict; our @list = qw(a b c d); foreach (@list) { &check_b; print $_, "\n"; } sub check_b { foreach (@list) { #local $_; $_ =~ s/b/bb/; # SAVE TO FILE } } As is, @list is printed incorrectly, but if you uncomment #local $_;, it'll print as expected." Bompa, was this the actual code you used? what was your output? and what machine are you on? 1 #!/usr/bin/perl -w 2 use strict; 3 use diagnostics; 4 5 our @list = qw(a b c d); 6 foreach (@list) { 7 &check_b; 8 print $_, "\n"; 9 } 10 11 12 sub check_b { 13 foreach (@list) { 14 local $_; 15 $_ =~ s/b/bb/; 16 # SAVE TO FILE 17 } 18 } ~ with #13 uncommented it produces the following output: Use of uninitialized value in substitution (s///) at ./ccdd line 15 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. a b c d with 'use diagnostics' removed it produces: Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. a Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. b Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. c Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. Use of uninitialized value in substitution (s///) at ./ccdd line 14. d I am running perl 5.6 on macos x.1. Sorry dude, i'm not trying to be a dick or anything, just asking ;-) -------------------------------------------------------------------------------- This email may contain confidential and privileged material for the sole use of the intended recipient. If you are not the intended recipient, please contact the sender and delete all copies. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]