package ClassA;
use strict;
use base qw(fields);
use fields qw(id name);
sub new {
my $class = shift;
$class->SUPER::new();
}
sub getclass
{
my $self = shift;
return ref($self);
}
1;
####
package ClassB;
use strict;
use base qw(ClassA);
use fields qw(addr phone city);
use ClassC;
sub addC
{
my $self = shift;
$self->{c} = ClassC->new();
}
1;
####
package ClassC;
use strict;
use base qw(ClassA);
use fields qw(model type);
sub addB
{
my $self = shift;
$self->{b} = ClassB->new();
}
1;
####
#!/usr/bin/perl -l
# Test program
use ClassA;
use ClassB;
use ClassC;
my $a = ClassA->new();
my $b = ClassB->new();
my $c = ClassC->new();
print $a->getclass();
print $b->getclass();
print $c->getclass();
$b->{name} = 'bee';
print $b->{name};
$c->{name} = 'see';
print $c->{name};
$b->{city} = 'wok';
print $b->{city};
$c->{model} = 't';
print $c->{model};