また、dbConnect not defined エラーを取得する方法もあります。問題が見つからないようです。dbConnect はパスワード付きのハード コードです。
#! perl
use strict;
use warnings;
use diagnostics;
use DBR qw(dbConnect query);
my $dbhead = dbConnect();
my $sql = "select * from mailing";
my @returned = query($dbhead,$sql);
DB.pmという名前の保存ディレクトリに保存されるモジュール。名前や内容を変更することはできません。
package GUI::DB;
use strict;
use DBI;
use warnings;
use vars qw(@ISA @EXPORT);
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(dbConnect query);
#
# dbConnect - connect to the database, get the database handle
#
sub dbConnect {
# Read database settings from config file:
my $dsn = "DBI:mysql:database=test";
my $dbh = DBI->connect( $dsn,
'abc',
'password',
{ RaiseError => 1 }
);
return $dbh;
}
#
# query - execute a query with parameters
# query($dbh, $sql, @bindValues)
#
sub query {
my $dbh = shift;
my $sql = shift;
my @bindValues = @_; # 0 or several parameters
my @returnData = ();
# issue query
my $sth = $dbh->prepare($sql);
if ( @bindValues ) {
$sth->execute(@bindValues);
} else {
$sth->execute();
}
if ( $sql =~ m/^select/i ) {
while ( my $row = $sth->fetchrow_hashref ) {
push @returnData, $row;
}
}
# finish the sql statement
$sth->finish();
return @returnData;
}
__END__
私が間違っているところを誰かが見てくれることを願っています。モジュールの下部にコードを記述して実行するだけで機能するため、モジュール内のサブルーチンが正しく機能することはわかっています。