package MyModule::DBI; use base Class::DBI; use warnings; use strict; our $VERSION = '0.01'; my $dsn = "dbi:SQLite:dbname=/path/to/db"; __PACKAGE__ -> set_db('Main', $dsn); 1; #### package MyModule::Data; use base MyModule::DBI; use warnings; use strict; our $VERSION = '0.01'; __PACKAGE__ -> table('data'); __PACKAGE__ -> columns(All => qw(column1 column2 column3)); 1; #### package MyModule; use MyModule::Data; use warnings; use strict; our $VERSION = '0.01'; sub new { my ($class, %args) = @_; my $self = bless({%args}, $class); return $self; } 1; #### use MyModule; my $obj = MyModule -> new(db_path => '/path/to/file');