Hi,
I'm having a bit of trouble with using some local scope variables. I have a function where I want to define a variable, then use that variable in a sub function. That sounds like the text book definition for when to use a local scope variable. Below is the test script that I'm using.
I'm using the 'use strict' declaration as all the books I've read (O'Reilly's) say that's a Good Thing to do.
Can someone offer some insight as to why when I declare $a it's ok, but declaring $aa give me an error?
I'm using Active State's Perl v5.8.3 build 809 for Windows.
Thanks for any help - Josh [EMAIL PROTECTED]
--------------------------------------------------------------------------------------------
use strict;
test1();
sub test1 { local $a = 1; local $aa = 2; test2(); }
sub test2 { print "a = $a\n"; print "aa = $aa\n"; }
# Global symbol "$aa" requires explicit package name at C:\projects\Tracing\test.pl line 8.
# Global symbol "$aa" requires explicit package name at C:\projects\Tracing\test.pl line 15.
# Execution of C:\projects\Tracing\test.pl aborted due to compilation errors.
'local' does not create a variable; the variable must already exist. In order to create a package variable you must use 'our' or 'use vars':
our $a; our $aa;
-or-
our ($a, $aa);
-or-
use vars qw($a $aa);
The above are all equivelant, and they all create to package variables named $a and $aa;
The reason you get no error for $a is because there is already a package variable with that name: the variables $a and $b exist automatically in every package for use in the 'sort' function.
Regards, Randy.
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>