我有一个尚未连接数据库的大型脚本。我需要一个来实现一个微小的新功能。在我需要的地方添加裸 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/