You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查‘Bareword "Common::dbconnect" not allowed while strict subs in use’错误

问题:Bareword "Common::dbconnect" 报错排查

已查阅所有相关“相似问题”帖子,除了提示子例程可能未返回值外,均无帮助。

这是某专有CMS的一部分,可用于创建页面、添加内容等,同一服务器上的多个网站均在使用该CMS,但仅有一个站点的某一项功能会返回以下错误:

Bareword "Common::dbconnect" not allowed while "strict subs" in use

相关代码

Super.pm 中创建数据库对象的代码:

use Common;
my ( $dbh ) = Common::dbconnect;

Common.pm 中的 dbconnect 子例程:

sub dbconnect {
    my ($host, $database, $username, $password) = getvariables();
    use DBI qw(:sql_types);
    $dbh_cache->{member} = DBI->connect("DBI:mysql:".$database.":".
                                                     $host,
                                                     $username,
                                                     $password,
    { RaiseError => 1 },) or die "Connect failed: $DBI::errstr\n";
    return ($dbh_cache->{member});
}

更新补充:Common.pm 顶部代码

use vars qw( @EXPORT );
@EXPORT = qw( checksession dbconnect);

调试困境

  • 这是编译错误,无法在任一模块中使用数据转储工具检查值
  • CMS的其他功能调用同一例程实现相同功能时无错误
  • 使用该CMS的其他站点调用同一例程时也无错误

疑问

我遗漏了什么?应该尝试哪些调试方法?

内容的提问来源于stack exchange,提问作者breadwild

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:40:06