Правильно ли я сделал модуль?
Это мой первый, прошу не ругать:)
package Mydbi;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(connect query execute select_row db_error);
use strict;
my ($dbh,$prefix_db);
$prefix_db="Префикс таб.";
sub connect
{
if (!$ENV{\'MOD_PERL\'}) { require DBI; }
my $db_host = "host";
my $db_name = "name";
my $db_user = "user";
my $db_pass
= "pass";
$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host",
$db_user,$db_pass) or db_error($DBI::errstr);
$dbh->do(\'SET NAMES "CP1251"\');
if (!$ENV{\'MOD_PERL\'}) { $dbh->{\'Warn\'} = 0;}
return $dbh;
}
sub query
{
my ($sql, $attr, @params) = @_;
$sql=~s/{prefix}/$prefix_db/;
$dbh->do($sql, $attr, @params) or db_error($DBI::errstr);
}
sub execute
{
my $sql = shift;
$sql=~s/{prefix}/$prefix_db/;
my $sth = $dbh->prepare($sql) or db_error($DBI::errstr);
$sth->execute or db_error($DBI::errstr);
return $sth;
}
sub select_row
{
my $sql = shift;
$sql=~s/{prefix}/$prefix_db/;
my $sth = $dbh->prepare($sql) or db_error($DBI::errstr);
$sth->execute or db_error($DBI::errstr);
my $result = $sth->fetchrow_hashref;
$sth->finish;
return $result;
}
sub db_error()
{
my $dbi_err = shift;
print "Content-type: text/html\\n\\n";
print $dbi_err;
die;
}
END { $dbh->disconnect() if defined($dbh) }
1;