sub set_db { my $class = shift; my $db_name = shift or $class->_croak("Need a db name"); $db_name =~ s/\s/_/g; my $data_source = shift or $class->_croak("Need a data source"); my $user = shift || ""; my $password = shift || ""; my $attr = shift || {}; ref $attr eq 'HASH' or $class->_croak("$attr must be a hash reference"); $attr = $class->_add_default_attributes($attr); $class->_remember_handle($db_name); no strict 'refs'; *{ $class . "::db_$db_name" } = $class->_mk_db_closure($data_source, $user, $password, $attr); return 1; } sub _add_default_attributes { my ($class, $user_attr) = @_; my %attr = $class->_default_attributes; @attr{ keys %$user_attr } = values %$user_attr; return \%attr; } sub _default_attributes { ( RaiseError => 1, AutoCommit => 0, PrintError => 0, Taint => 1, RootClass => "DBIx::ContextualFetch" ); }