> Bryan R Harris wrote: >>> Bryan Harris wrote: >>>> John W. Krahn wrote: >>>>> Bryan Harris wrote: >>>>>> ... but by modifying $_ I was clobbering $_ elsewhere in the larger >>>>>> program! >>>>> Yes because $_ is a special global variable. This effect is called >>>>> "action at a distance" which is why it is better to use named lexically >>>>> scoped variables instead of $_. >>>> I have the Perl Bookshelf on CD (and perldoc, obviously) -- where can I >>>> read >>>> more about this? >>> perldoc perlvar >>> >>> http://shoebox.net/articles/perl-warts.html >>> http://en.wikipedia.org/wiki/Action_at_a_distance_(computer_science) >> >> Great info, thanks. >> >> Curiously, perlvar seems to recommend localizing $_ with "local", but I >> thought I read somewhere to never use local and only use my. I still don't >> understand how those two are different. > > local() only works on variables that are in the symbol table, in other > words package variables. All variables that are a single puntuation > character are package variables and some are global and effect all > packages. local() does not create a variable it just masks the current > value of a variable within the current scope. > > my() creates variables that are not in the symbol table and are visible > only within the current block or file.
Ah, that cleared it up. Thanks, John. - Bryan -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/