【发布时间】:2016-04-16 22:57:05
【问题描述】:
我有一个名为Mysql_Routines 的perl 模块,其中包含我用于使用DBI 操作mysql 数据的各种函数。我将这些函数导出如下:
package Mysql_Routines;
use DBI;
use strict;
use warnings;
use Data::Dumper;
use Exporter qw(import);
our @EXPORT_OK = qw(connect_to insert_row get_rows);
这些可以使用以下代码从其他脚本和模块访问:
use my_modules::Mysql_Routines qw (connect_to insert_row get_rows);
这似乎都是标准做法,如 Perl Maven 中所述。但是,我只能通过使用模块标识符来调用这些函数,否则我会收到一个错误,即它是一个未定义的子例程。例如:
my $dbh = Mysql_Routines::connect_to('./config/mysql-local.conf');
有效。
my $dbh = connect_to('./config/mysql-local.conf');
抛出以下错误:
Undefined subroutine &main::connect_to called
这显然不是一个大问题,尽管我想了解为什么会发生这种情况,因为我似乎遵循了创建包含函数的模块的正确指南。
请在下面查看我的解决方案。包声明应该包含顶级目录。愚蠢的错误。
【问题讨论】:
-
请发布确切的错误字符串。
-
请出示您的完整模块声明。