【问题标题】:Error While installing perl module from CPAN从 CPAN 安装 perl 模块时出错
【发布时间】:2014-02-18 08:42:14
【问题描述】:

我尝试从 CPAN 安装 DBD-SQLite-0.31 模块。我已经从CPAN 下载了DBD-SQLite-0.31。我尝试安装它,它给了我一个先决条件DBI 模块不存在的错误。

我从 CPAN 安装了 DBI 模块,然后安装了DBD-SQLite-0.31

当我尝试运行 perl 语句 use DBI DBD::SQLite; 时,它给出了错误

"DBD::SQLite" is not exported by the DBI module
Can't continue after import errors at DBI.txt line 3
BEGIN failed--compilation aborted at DBI.txt line 3.

为什么会发生错误?

当我尝试调试它时,我发现要运行语句use DBI DBD::SQLite;,DBD::SQLite 需要在 DBI 目录中,但两者都在不同的目录中。我什至在 DBI 文件夹中复制了 DBD::SQLite,但问题仍然存在。 (这些都是我的胡思乱想)

【问题讨论】:

  • 对于 DBI 和 DBD::SQLite,您需要 2 个单独的 use 语句。你不能一次导入,那是不正确的语法。
  • @DA14,您根本不需要 DBD::SQLite 的 use 语句。当您连接到 SQLite 数据库时,它会由 DBI 自动加载。

标签: perl


【解决方案1】:

声明use DBI是你想要的。

模块名称之后的任何内容作为参数传递给导入模块的import 方法。

【讨论】:

  • 因为 'DBD::SQLite' 不是导入方法的有效参数。在大多数情况下,您会提供一个应保存在当前命名空间中的子列表。
【解决方案2】:

我不知道你是从哪里得到的想法来尝试像这样加载它,但一般来说,如果你不确定如何使用一个模块,你需要查看它在 CPAN 上的文档.

在这种情况下,它真的很简单:https://metacpan.org/pod/DBD::SQLite#SYNOPSIS

【讨论】:

    【解决方案3】:

    发生的情况是,您不应在单个 use 语句中提及多个模块。使用行上的额外信息可以包括模块的最低版本号或模块应导出的项目列表。 perldoc -f use 了解血腥细节...

    一般来说,您不会想要明确地use DBD::SQLite;。一般会在DBI->connect()的第一个参数中隐式提及来加载。

    【讨论】:

    • 请不要在方法或函数调用后使用不必要的括号。尽可能将它们排除在外,仅在 Perl 解析器无法识别您要执行的操作时才使用它们是一种很好的 Perl 风格。
    猜你喜欢
    • 2011-10-10
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2013-06-30
    • 2016-07-08
    • 2013-11-22
    • 1970-01-01
    相关资源
    最近更新 更多