如何排查‘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
相关产品推荐
相关产品推荐

