On Feb 4, Timothy Johnson said:

>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)

There sure is.

  @n = qw( john jacob jingleheimer schmidt );

  print "<@n>\n";
  for (@n) { print "even: $_\n" if even(split //) }
  print "<@n>\n";

  sub even {
    my $sum = 0;
    while (@_) {
      $_ = shift;
      $sum += ord;
    }
    return $sum % 2 == 0;
  }

Since $_ was not localized, changing it in even() changes $_ in the for
loop, and since $_ in the for loop is aliased to the elements of the
array... well... run the code to see what happens. :(

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.



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

Reply via email to