Как правильно использовать use в Perl ?

программирование Linux MySQL perl USE

Есть index.pl^

#!/usr/local/bin/perl

use strict;
use HTML::Template;
use Data::Dump qw(dump);
use Data::Dumper;
use DB;

print "Content-type: text/html\n\n";
my $SITE_ROOT = $ENV{DOCUMENT_ROOT}.'/translate/';

my $dbh = DB::get_active_connection();
my $sth = $dbh->prepare(qq{select * from posts});
$sth->execute();

// - какой то код//

И есть файл DB.pm

#!/usr/local/bin/perl
package DB;

use DBI;

my $dsn = 'DBI:mysql:guestbook:localhost';
my $db_user_name = 'guestbook';
my $db_password = 'guest';

my ($id, $password);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

sub get_active_connection
{
return $dbh;
}
1;

Так вот, в браузере отображается
"Undefined subroutine &DB::get_active_connection called at C:/xampp/htdocs/translate/index.pl line 12."

Что ему не хватает для счастья ?
Ответы:
Use это дириктива для подключения модулей из определённой папки. Найти эту папку можно командой:
find / -name 'name.pm'
или указать папку поиска:
use lib '/data/perl/lib/';
use Lib1::Test;
Если бы проблема была в поиске модуля, Perl отваливался бы еще при компиляции - use штука суровая.
На первый взгляд все в порядке, на ум приходит отпечатка в имени сабы при вызове. Попробуйте заюзать модуль Exporter, можно будет вызывать сабы без указания имени модуля.
В стандартном модуле DB (http://perldoc.perl.org/DB.html) - нет процедуры "sub get_active_connection", видимо вы пытаетесь написать свой модуль (package), а подключаете стандартный.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.