use DBI; use Tie::Constrained; our $dbh; tie $dbh, 'Tie::Constrained' => { test => sub { $_[0]->isa('DBI::db') and $_[0]->ping; }, value => DBI->connect('DBI:Mock:','','', \%attr), fail => sub { # warn "Connecting $dsn . . ."; $_[1] = DBI->connect($dsn, $user, $passwd, \%attr) or die $DBI::errstr; } }; $dbh->{'mock_can_connect'} = 0; $Tie::Constrained::STRICT = 1;