"...
Unlike 'my', however, it is a permanent
package variable and its value will be retained across calls to a
subroutine ..."  --Rob

Hi Rob,

So does this make it equivalent to a C-style static variable?
I've been trying to test it, and it seems to be impossible to even declare it using 
strict.  When I try to declare a variable as local, I get an error telling me that the 
global symbol needs an explicit package name.  When I try to modify an existing 
variable, I get an error saying that I can't modify a lexical variable.

Without strict, I have yet to find any configuration that would actually retain value 
between calls to a function.

Can you show any examples of local at work--preferably using strict?

Thanks,

Joseph

I do have a little demo for the our and my scoping, about the way I would use them.  I 
actually couldn't detect any difference when declared in the global scope, so I take 
the our declaration as a comment, to remind me that I've done something dumb by 
declaring in the global context.  Essentially, I would say that visibility protection 
comes down to the location of the declaration.

#!/usr/bin/perl -w

#use strict;

our $FirstName = "Robert";

FeedSub();
sub FeedSub {
  $MiddleName = "Joseph";
  my $LastName = "Newton";

  for (1...4) {
    TestIt($LastName, $MiddleName);
   print "$LastName\n";
   print "$FirstName\n";
   print "$MiddleName\n";
  }
}

sub TestIt {
  my ($LastName, $MiddleName) = @_;
 print "$LastName\n";
 $MiddleName .= '_';
 $FirstName .= '_';
 print "$FirstName\n";
 print "$MiddleName\n";
 print "$LastName\n";
}



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

Reply via email to