in reply to "our" versus "my" for class data
I'm not sure whether you meant to imply this or not, but one big difference between using my and our, is that our does not really create a closure.* You hint at this when you say our "allow[s] it to be set from outside the package," but I just thought it could use some explicit clarification.
* Update: actually, the snippet using our does create a closure, but the thing being closed on is not the variable itself. See this post by tilly for details.
Compare:
{ our $foo; sub inc { ++$foo } } print inc for 1 .. 5; our $foo; print ++$foo;
To:
{ my $foo; sub inc { ++$foo } } print inc for 1 .. 5; my $foo; print ++$foo;
The neat thing about closures is that they allow the variable to persist, while also protecting it from the outside. Using our does not.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: "our" versus "my" for class data
by dragonchild (Archbishop) on Aug 08, 2004 at 02:47 UTC | |
by revdiablo (Prior) on Aug 08, 2004 at 06:38 UTC | |
by tilly (Archbishop) on Aug 08, 2004 at 07:39 UTC | |
by revdiablo (Prior) on Aug 08, 2004 at 18:23 UTC |