Timothy Johnson wrote:
> 
> Ok, I figured that much, but I guess my question is this:  Is there a
> pressing need to scope a predefined variable like $_?  How could this
> adversely affect a program?  (I'm not trying to be a smart aleck, I really
> want to know)
> 


Hi,
Sorry for such a short answer in my first post, but actually,
scoping is brand new to me, so I was shy of going into a lot
of details on the matter.

However, since the whole idea behind using local or my with variables
is to prevent a variable name from writing over the same variable
name elsewhere in the script, it makes even *more* sense to me to
use local with Perl's special variables; in that they are used frequently 
throughout one's script, (with different values/purposes).

If $_ were a constant value like pi throughout a script, that would be 
different.  Then there would be no purpose in scoping it.


Since I couldn't understand Jeff's code, (no offense, I'm new), 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).


# THE MAIN PROGRAM PRINTS AN ARRAY.  HOWEVER IT ALSO CALLS
# A SUBROUTINE THAT CHECKS EACH ELEMENT FOR "b".  IF "b" IS
# FOUND, IT SAVES IT IN A FILE.  THE SUBROUTINE SHOULD BE
# HARMLESS, RIGHT?

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

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to