I've been poring over the Perl Best Practices book as of late, lovely work, wish
I would have read it when it first came out....

Anyway, I'm curious about a way I'm using variables, here is my example:

package Habitat::Definitions;
use Class::Std::Utils;
{
        use strict;
        use base qw( Habitat );

        my %definitions_of;

        #
        # Initialize definitions
        #
        sub new {

                my( $class ) = @_;
                my $self = bless anon_scalar(), $class;

                my $defs = {};

                $defs->{server_user} = $ENV{HOME} ? "perl" : "boysie";

                # setup external ips
$defs->{servers} = { dynamic => '192.168.0.1', static => '192.168.0.2' };

                # default redirect
                $defs->{real_habitat} = "http://www.habitatlife.com/habitat/";;

                $definitions_of{ ident $self } = $defs;
                # not returning $self, but $definitions hash reference instead
                return $definitions_of{ident $self};    
        }

        sub DESTROY {
                my ( $self ) = @_;

                delete $definitions_of{ident $self};
        }
}
1;

...then later....

my $defs = Habitat::Definitions->new();

...and later still...

my $usr = $defs->{server_user};

$defs->{root_directory} = "/Users/$usr/";


Is this bad usage?

Am I creating the same situation using inside-out classes seek to avoid,
i.e. accessing object internals directly via manipulating $definitions_of{ident Habitat::Definitions}?

Is this kind of structure still prone to leak memory?

What are the ramifications of not returning the $self blessed reference?


Thanks for any help,
Boysenberry Payne
[EMAIL PROTECTED]



Reply via email to