我写了一个perl模块:
package sql;
use strict;
use XML::Simple;
use DBI;
use DBD::mysql;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(DBImport DataFill);
our @EXPORT = qw(DBImport DataFill);
our $dbh;
sub DBConnect() {
my $platform = "mysql";
my $database = "databasename";
my $host = "localhost";
my $user = "user";
my $pw = "password";
my $dsn = "dbi:mysql:$database:localhost";
$dbh = DBI->connect($dsn, $user, $pw);
$dbh->do('SET NAMES utf8');
return $dbh;
}
sub Query($) {
my $sth = $dbh->prepare(shift);
$sth->execute;
while (my $ref = $sth->fetchrow_hashref()) {
print $ref->{'email'};
}
$sth->finish();
}
BEGIN{
$dbh = &DBConnect();
}
END{
$dbh->disconnect();
}
1;我试着使用它:
#!/usr/bin/perl
use strict;
use CGI qw/:standard/;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use sql;
&Query("SELECT * FROM users");但它不起作用。
错误消息:未定义的子例程&main::查询在/var/www/domain/gabordx.tauri.hu/www/main.pl第7行调用。-> "&Query("SELECT * FROM users");“
问题出在哪里?
谢谢!
发布于 2012-05-15 05:18:24
您还需要导出Query,如下所示:
our @EXPORT_OK = qw(Query DBImport DataFill);
our @EXPORT = qw(Query DBImport DataFill);否则,您应该通过sql包引用它,如下所示
sql::Query("SELECT * FROM users");发布于 2012-05-15 05:15:36
您可以直接调用它,在前面加上模块名称:
sql::Query("SELECT * FROM users");或者,您可以从模块导入它
our @EXPORT_OK = qw(Query DBImport DataFill); # In the module
use sql qw(Query); # In caller code也可以默认从sql.pm中导出它
our @EXPORT = qw(Query DBImport DataFill);@EXPORT和@EXPORT_OK的参考:http://perldoc.perl.org/Exporter.html#How-to-Export
发布于 2012-05-15 05:14:07
一种方法是导出函数:
our @EXPORT = qw(DBImport DataFill Query);perldoc Exporter
https://stackoverflow.com/questions/10590910
复制相似问题