#!/usr/bin/perl
package Agent;
use _Initialize;
@ISA = qw( _Initialize tools );
sub _init
{
my ($self, %args) = @_;
$self->tools::_init(%args);
#$self->PunMeister::_init(%args);
$self->{_acolytes} = $args{followers};
$self->{_philosophy} = $args{manifesto};
}
sub DESTROY
{
my ($self) = @_;
print "pg dtor\n";
no strict "refs";
foreach my $parent ( @{ref($self)."::ISA"} )
{
my $destructor = $parent."::DESTROY";
$self->$destructor();
}
}
1;
####
package _Initialize;
use strict;
sub new
{
my ($class, %args) = @_;
my $self = bless {}, ref($class)||$class;
$self->_init(%args);
return $self;
}
sub DESTROY {}
1;
####
#!/usr/bin/perl
package tools;
@ISA = qw( _Initialize );
sub _init
{
my ($self, %args) = @_;
$self->{_name} = $args{name};
$self->{_alias} = $args{moniker};
$self->{_langs} = $args{languages};
}
1;
####
#!/usr/bin/perl
use Data::Dumper;
use Agent;
my $config = Agent->new();
print Dumper($config);