Instead of naming your class all the time, you can use the __PACKAGE__ keyword
package FilmBuff::DBI;
use base 'Class::DBI';
__PACKAGE__->set_db('Main', 'dbi:mysql:database=test', 'test', '');
# FilmBuff::Person
package FilmBuff::Person;
use base 'FilmBuff::DBI';
__PACKAGE__->table('person');
__PACKAGE__->columns('id', 'name');
__PACKAGE__->columns(Primary => 'id');
FilmBuff::Person->has_many('credits', FilmBuff::Credit => 'person_id');
# FilmBuff::Film
package FilmBuff::Film;
use base 'FilmBuff::DBI';
__PACKAGE__->table('film');
__PACKAGE__->columns('id', 'title', 'year');
__PACKAGE__->columns(Primary => 'id');
__PACKAGE__->has_many('credits', FilmBuff::Credit => 'film_id');
# FilmBuff::Credit
package FilmBuff::Credit;
use base 'FilmBuff::DBI';
__PACKAGE__->table('credit');
__PACKAGE__->columns('id', 'type', 'person_id', 'film_id');
__PACKAGE__->columns(Primary => 'id');
__PACKAGE__->has_a('film_id' => 'FilmBuff::Film');
__PACKAGE__->has_a('person_id' => 'FilmBuff::Person');