class_has 'db' => (is => 'rw',isa => 'Str', default => 'theDB'); class_has 'port' => (is => 'rw',isa => 'Int', default => 3306); class_has 'host' => (is => 'rw',isa => 'Str', default => '127.0.0.1'); class_has 'user' => (is => 'rw',isa => 'Str', default => 'theUSER'); class_has 'pwd' => ( s => 'rw',isa => 'Str', default => 'thePASS'); sub dbh { my $self = shift; my $dsn = 'DBI:mysql:' . GSM::SQLConnection->db . ';host=' . GSM::SQLConnection->host . ';port=' . GSM::SQLConnection->port; return DBI->connect_cached( $dsn, GSM::SQLConnection->user, GSM::SQLConnection->pwd ); } no Moose; no MooseX::ClassAttribute; __PACKAGE__->meta()->make_immutable(); ... my $sth = SQLConnection->dbh()->prepare( ... )