in reply to Package variables

Perhaps you can encapsulate the package's variables as "getter" and "setter" methods (properties?).

For example:

sub thisvariable { my $self = shift; if (@_) { $self->{THISVARIABLE} = shift } return $self->{THISVARIABLE}; }


Check out http://www.perl.com/pub/doc/manual/html/pod/perltoot.html

Of course, I'm kind of biased towards OOP anyway.

Replies are listed 'Best First'.
RE: Re: Package variables
by DrManhattan (Chaplain) on Apr 25, 2000 at 21:05 UTC
    You could also just bless the variable in your constructor:
    package Foo; use strict; my $Bar = "Baz"; sub new { return bless { BAR => $Bar }; } package main; my $Foo = new Foo(); print $Foo->{'BAR'};
RE: Re: Package variables
by Aighearach (Initiate) on Apr 25, 2000 at 17:45 UTC
    OO is great when you need it, but it is considerably slower, so I try to reserve creating method calls for situations where that sort of abstraction is needed. A good module will use both. For example, I like being able to:
    use CGI::Pretty qw( param ); if ( defined( param('url') ) { #lets not waste any CPU here, this gets + called even when I'm index.cgi #okay, this isn't the front page, lets see what we've got. my $object = new CGI(); my $url = $object->('url'); # etc....
    of course that could be optimized further by parsing out the url at the same time that we test for it, and setting it to 'index' if it's not there, but you get the idea.
    That's part of the beauty of Perl; there is more than one way to do it.
    I don't think Larry intended us to just pick our favorite way, but to use each of these ways, when the time is right.