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.
In reply to Re: "our" versus "my" for class data
by revdiablo
in thread "our" versus "my" for class data
by mp
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |