$password= secret(...); ... local $password->{stringify_mask}= undef if ref($password) eq 'Crypt::SecretBuffer'; $db= DBI->connect($dsn, $user, $password, \%attr); #### if ($password isa 'Crypt::SecretBuffer') { $db= $password->apply(sub { DBI->connect($dsn, $user, $_[0], \%attr) }); else { $db= DBI->connect($dsn, $user, $password, \%attr); } #### if (blessed $password && $password->can("unmask_secret_to")) { $db= $password->unmask_secret_to(\&DBI::connect, 'DBI', $dsn, $user, $password, \%attr); } else { $db= DBI->connect($dsn, $user, $password, \%attr); } #### $db= DBI->connect($dsn, $user, ref $password? $$password : $password, \%attr);