Продолжая изучать Perl пишу web-интерфейс. На данный момент в index.pl есть конструкция вида:
Код: Выделить всё
use CGI qw/:all/;
use Time::localtime;
use File::Basename;
unshift(@INC, dirname($0));
.................................
if (request_method() eq 'POST') {
require 'db.pl';
if (param('to') eq 'passwd') {
require 'passwd.pl'
}
} else {
if (param('to') eq 'passwd') {
require 'passwd.pl';
} else {
}
}По идее в зависимости от выбранной ссылке будет загружен тот или иной файл. При использовании GET вроде работает, при использовании POST нет.
Файл db.pl предполагается подключать в другие файлы которым требуется работать с базой данных:
Код: Выделить всё
#!/usr/bin/perl -w
#vim:ts=4:sw=4
use strict;
use DBI;
my $dbtype = 'mysql';
my $dbname = 'test';
my $dbuser = 'iser';
my $dbpasswd = 'passwd';
my $dbh = DBI->connect("DBI:$dbtype:$dbname", $dbuser, $dbpasswd);
1;Файл passwd.pl:
Код: Выделить всё
................................
if (param('old') && param('new') && param('new2')) {
my $old = param('old');
my $new = param('new');
my $new2 = param('new2');
print $old, $dbtype;
my $sth = $dbh->prepare("SELECT password FROM users " .
"WHERE password = MD5('$old') AND ");
$sth->execute();
if ($sth->rows) {
......................................В логах сервера сообщения вида:
Код: Выделить всё
Use of uninitialized value $dbtype in print at /var/www/vexim/passwd.pl line 20.
Use of uninitialized value $dbtype in print at /var/www/vexim/passwd.pl line 20.
Can't call method "prepare" on an undefined value at /var/www/vexim/passwd.pl line 21.
Compilation failed in require at /var/www/vexim/index.pl line 34.Насколько я понимая это из того, что файл db.pl корректно не подключился.
Где я ошибся?
Спасибо.