[Wellington-pm] 'my' and 'our'

Sam Vilain sam at vilain.net
Wed May 3 16:02:04 PDT 2006

Cliff Pratt wrote:

>So, if the variable ($bar) is not used outside the package, it can be 
>declared with 'my'. If it is defined with 'our' it is available anywhere 
>in the package (or scope) as simply $bar

"Scope" is correct. If you declare a variable with "our" inside a sub,
for instance, you will need to declare it in other subs in the same
package to refer to it.


use strict;

sub foo {
our $bar;

sub baz {
$bar; # error

sub frop {
our $bar; # same $bar as in &foo

>Since all object variables should be accessed by an accessor method, in 
>an object situation, the use of 'our' should be rare.

Indeed. It's generally considered bad form, especially where it can be
easily avoided.

>Similarly in an ordinary package, you wouldn't normally expose a package 
>variable unless you had a good reason, probably to configure something 
>basic in the package.

Yes, and if you're writing OO properly, it's usually more appropriate to
use "class methods" for those. ie, people need to write "ClassName->foo"
to get the variables.


>Am I correct?

More information about the Wellington-pm mailing list