package Stuff::DBI; use base 'Class::DBI::BaseDSN'; package Stuff::Item; use base 'Stuff::DBI'; __PACKAGE__->set_up_table('item'); __PACKAGE__->has_a(categoryId => 'Stuff::Category'); package Stuff::Category; use base 'Stuff::DBI'; __PACKAGE__->set_up_table('category'); __PACKAGE__->has_a(departmentId => 'Stuff::Department'); package Stuff::Department; use base 'Stuff::DBI'; __PACKAGE__->set_up_table('department'); package main; Stuff::DBI->set_db('Main', 'dbi:mysql:dbname', 'gryphon', 'password'); my $item = Stuff::Item->retrieve(1); print $item->name, "\n";