use strict; use warnings ; package Testing2; use base 'Testing'; Testing2->table('test_a'); Testing2->columns(Primary => qw/oid/ ) ; Testing2->has_many( bs => 'Testing3', 'aoid'); sub flagged { my $self =shift ; my @bs = $self->bs( flag => 1 ) ; return shift @bs ; } sub flagged2 { my $self =shift ; unless(defined($self->{f})) { my @bs = $self->bs( flag => 1 ) ; $self->{f} = shift @bs ; } return $self->{f} ; } sub DESTROY { my $self = shift; print "Destroying a " . $self->oid . "\n"; } 1; #### use strict; use warnings ; package Testing3; use base 'Testing'; Testing3->table('test_b'); Testing3->columns(Primary => qw/oid/ ) ; Testing3->columns(Essential => qw/aoid flag/ ) ; Testing3->has_a( aoid => 'Testing2'); sub DESTROY { my $self = shift; print STDERR "Destroying b " . $self->oid . "\n"; } 1; #### sub flagged { my $self =shift ; my @bs = $self->bs( flag => 1 ) ; return shift @bs ; } #### sub flagged2 { my $self =shift ; unless(defined($self->{f})) { my @bs = $self->bs( flag => 1 ) ; $self->{f} = shift @bs ; } return $self->{f} ; }