in reply to Re^3: Unclear about 'our'
in thread Unclear about 'our'

I think it's fair to say that, in object-oriented design, the fields/attributes/properties/member variables of a class are a common pool of variables shared by subroutines/methods. In fact, I've come to think of these as "globals with discipline", which is generally my thinking when I declare the variables I mentioned.

However, as HaukeX suggested, it might be time to learn to write OO Perl. :-)

Replies are listed 'Best First'.
Re^5: Unclear about 'our'
by haukex (Archbishop) on Dec 28, 2022 at 17:55 UTC
    I think it's fair to say that, in object-oriented design, the fields/attributes/properties/member variables of a class are a common pool of variables shared by subroutines/methods.

    I'd look at it differently - while of course the subs are part of the class and technically all objects of the class share them, each object is a separate entity, so I'd look at it as each object having its own copy of the instance variables - or in Perl, really just one variable, typically referred to as $self. I would not expect to see any variables declared outside of the subs of the class, perhaps the only exception being default settings like I showed here.

    (The concept of Inside Out objects also exists, but I practically never see that in the wild and personally wouldn't suggest it.)

      I see what you mean. Now that I have read a bit about OO Perl I see that what I've been creating would be considered "class variables" (a.k.a. static member variables) in C++, which is the extent of my OO experience. As you point out, they have their place, but they're not the same as instance variables.