gpt4 book ai didi

perl - 没有包就不能调用方法 "disconnect"..Perl

转载 作者:行者123 更新时间:2023-12-04 05:46:42 27 4
gpt4 key购买 nike

我写了一个 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::Query 在/var/www/domains/gabordx.tauri.hu/www/main.pl 第 7 行调用。 -> "&Query("SELECT * FROM users");"

有什么问题?

谢谢!

最佳答案

您可以直接调用它,添加模块名称:

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

关于perl - 没有包就不能调用方法 "disconnect"..Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10590910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com