使用DBI导致模块文件编译错误

using DBI causes module file compilation Error

我在共享主机服务器上。 我有一个工作正常的 perl 模块文件。我可以从 perl 脚本文件中毫无问题地使用它的 subs。如果我将其添加到 pm 文件,

use DBI;
my $username = "username";
my $password = "password";
my $dsn = "DBD:mysql:database"; # i changed DBD to DBI as well but no good

仍然一切正常。 但是一旦我将以下行添加到 perl 模块文件中,perl 脚本文件就会开始抱怨“Compilation failed in require”

my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;

我尝试用谷歌搜索但没有结果。有什么想法吗?

数据源必须是“DBI:mysql:database=my_database”,您可以在其中传递数据库的种类和名称。

出现错误是因为必须安装数据库驱动模块DBD::mysql。向您的主机商询问该模块是否已安装或您是否可以自行安装。

我想创建一个 dbi 句柄,它可以被该模块的子程序使用,但是在我可以使用它之前我遇到了错误(正如我在问题中提到的)。 可能是模块的安全特性,显然我只能在子表单中使用 dbi,

use DBI;
sub databaseHandle{
my $username = "username";
my $password = "password";
my $dsn = "DBI:mysql:database";
my $dbh = DBI->connect($dsn, $username, $password ) or die $DBI::errstr;
return $dbh }
my $dbh = databaseHandle();

我不知道具体原因,但这就是我使用它的方式。 感谢所有的帮助和想法。