perl - 我可以安全地要求 Perl 的 DBI 而不是使用它吗?

标签 perl dbi

我有一个尚未连接数据库的大型脚本。我需要一个来实现一个微小的新功能。在我需要的地方添加裸 block 到 require DBI 是否安全,或者我是否需要导入某些内容?

# Lots of no-database code here...
my $obj;
{
  require DBI;
  my $dbh = DBI->connect('dsn');
  $obj = ModuleThatNeedsDBH->new(dbh => $dbh);
}
$obj->fancyStuff();
# More no-database code...

该 block 当然是让 $dbh 对程序的其余部分隐藏。

最佳答案

默认情况下,DBI 模块不会将任何内容导入到调用包中,所以理论上您可以使用 require 而不是 use

但是您希望从中获得什么?在这种情况下,use DBI 相当于 BEGIN { require DBI },如果省略 BEGIN block ,您将强加以下冗长的过程:在运行时加载包是不受欢迎的。

请注意,您还必须处理连接数据库的任何失败。

my $dbh = DBI->connect('dsn', 'user', 'pass')
            or die $DBI::errstr;

虽然对于你来说死亡可能有点极端。

关于perl - 我可以安全地要求 Perl 的 DBI 而不是使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296732/

相关文章:

perl - 如何根据来自不同散列的键对散列中的值求和?

linux - Perl 编写 excel 以在各种工作表中创建包含包含公式的单元格的图表

c++ - 如何使用 XS 连接 C++ 和 Perl?

ruby - 使用 Ruby 连接到 MSSQL 数据库

sql-server - 为什么这个带有 DBI 连接到 MS SQL 服务器的 perl 程序通过 ODBC 泄漏内存?

perl - Net::SMTP::SSL(通过 gmail 和 amazon smtp)- 发送带附件的电子邮件时为 'Connection Closed'

perl - 如何将 GTK3 与 perl 一起使用?

perl - Perl,DBD::Oracle和Oracle 10g的字符集问题

perl - 像我一样使用 selectall_hashref

mysql - 使用执行的语句将结果插入到另一个表中(Perl DBI 和 MySQL)