URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3945
[ Назад ]

Исходное сообщение
"Перл модули"

Отправлено alexeylomov , 10-Фев-05 18:55 
Есть некий модуль perlnewdb.pm который необходимо использовать в скрипте.
Но вот какая сложность: он лежит в нестандартном месте ( /usr/local/extern/lib/perl )
И он должен там остаться, но при запуске скрипта perl ругается, что модуль не найден
(так как он его ищет в стандартных директориях).
Пишет Can't locate perlnewdb.pm in @INC (@INC contains: <список_директорий>)
Так вот, никак не могу найти, где этот @INC находится. Кто-нибудь может подсказать?

Содержание

Сообщения в этом обсуждении
"Перл модули"
Отправлено alexeylomov , 10-Фев-05 19:26 
Вопрос снят, прошу прощения за тупость :)

"Перл модули"
Отправлено alexeylomov , 11-Фев-05 17:12 
Новый вопрос: а если используемый модуль тоже включает в себя другой модуль из /usr/local/extern/lib/perl , то как его вписать в @INC?
Когда я пишу в заголовке #!/usr/bin/perl -w -I /usr/local/extern/lib/perl, то модуль perlnewdb.pm обнаруживается, но он включает perlolddb.pm, и при попытке запуска перл пишет Can't locate loadable object for module perlolddb in @INC, хотя теперь /usr/local/extern/lib/perl в списке есть?

"Перл модули"
Отправлено rWizard , 11-Фев-05 17:39 
use lib qw(/usr/local/extern/lib/perl);

"Перл модули"
Отправлено alexeylomov , 11-Фев-05 19:07 
>use lib qw(/usr/local/extern/lib/perl);

Ничего не изменилось :(


"Перл модули"
Отправлено alexeylomov , 11-Фев-05 19:18 
Заметьте, он пишет не Can't locate perlolddb.pm in @INC, a Can't locate loadable object for module perlolddb in @INC

"Перл модули"
Отправлено rWizard , 11-Фев-05 19:59 
>Заметьте, он пишет не Can't locate perlolddb.pm in @INC, a Can't locate
>loadable object for module perlolddb in @INC
use lib ... нужно писать в pakage, который будет подгружать модули из этой директории.


"Перл модули"
Отправлено alexeylomov , 15-Фев-05 17:46 
>use lib ... нужно писать в pakage, который будет подгружать модули из
>этой директории.

Так я там и пишу (в perlnewdb.pm) сразу после надписи use perlolddb;


"Перл модули"
Отправлено alexeylomov , 18-Фев-05 13:18 
Снова здравствуйте. Проблему я так и не решил.
Опишу ещё раз всё подробнее:
Есть скрипт, который использует библиотеку perlnewdb.pm
Но она лежит в нестандартном месте (/usr/local/extern/lib/perl), поэтому use perlnewdb; не работает.
Тогда я в первой строке пишу #!/usr/bin/perl -w -I /usr/local/extern/lib/perl и эту библиотеку скрипт находит.
Но эта библиотека использует perlolddb.pm, которая лежит в той же папке.
И вот тут уже начинаются проблемы, так как при запуске он пишет
Can't locate loadable object for module perlolddb in @INC...
Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
Подскажите, пожалуйста, что нужно сделать?

"Перл модули"
Отправлено rWizard , 18-Фев-05 14:37 
>Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
добавляли в библиотек или в основной скрипт?



"Перл модули"
Отправлено alexeylomov , 18-Фев-05 14:48 
>>Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
>добавляли в библиотек или в основной скрипт?

Добавлял в библиотеку perlnewdb.pm сразу после строки use perlolddb; - не помогало.
В основной скрипт тоже пробовал добавлять - ничего.
И даже в perlolddb.pm добавлял.


"Перл модули"
Отправлено ACCA , 19-Фев-05 03:14 
Я это так делаю:

1. Модуль Mymodule.pm содержит класс PROJECT::Mymodule и лежит в
   каком-нибудь /usr/local/extern/lib/perl/PROJECT.
2. В стандартном месте (какой-нибудь /etc/httpd/perl) делаю symlink
   PROJECT -> /usr/local/extern/lib/perl/PROJECT.


"Перл модули"
Отправлено rWizard , 19-Фев-05 14:02 
>Добавлял в библиотеку perlnewdb.pm сразу после строки use perlolddb; - не помогало.
нужно ДО use perlolddb;
тк  use lib qw(/usr/local/extern/lib/perl); - добавляет /usr/local/extern/lib/perl к путям для поиска библиотек


"Перл модули"
Отправлено alexeylomov , 21-Фев-05 16:39 
>нужно ДО use perlolddb;
>тк  use lib qw(/usr/local/extern/lib/perl); - добавляет /usr/local/extern/lib/perl к путям для поиска
>библиотек

Написал до use perlolddb; - не помогло. А путь этот там уже итак был.
Дело, видимо, в чём-то другом...


"Перл модули"
Отправлено Vladimir D Belousov , 25-Фев-05 10:48 
>Снова здравствуйте. Проблему я так и не решил.
>Опишу ещё раз всё подробнее:
>Есть скрипт, который использует библиотеку perlnewdb.pm
>Но она лежит в нестандартном месте (/usr/local/extern/lib/perl), поэтому use perlnewdb; не работает.
>
>Тогда я в первой строке пишу #!/usr/bin/perl -w -I /usr/local/extern/lib/perl и эту
>библиотеку скрипт находит.
>Но эта библиотека использует perlolddb.pm, которая лежит в той же папке.
>И вот тут уже начинаются проблемы, так как при запуске он пишет
>
>Can't locate loadable object for module perlolddb in @INC...
>Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
>Подскажите, пожалуйста, что нужно сделать?


покажи
ls -l того каталога в части, касающейся обоих модулей
и
head perlnewdb.pm
head perlolddb.pm


"Перл модули"
Отправлено alexeylomov , 25-Фев-05 13:01 
>покажи
>ls -l того каталога в части, касающейся обоих модулей

>head perlnewdb.pm
>head perlolddb.pm

Пожалуйста:

    ls -l  /usr/local/extern/lib/perl
-rw-r--r--    1 root     root         3868 Dec 22  2004 confperl.pm
-rw-r--r--    1 root     root        2979 Dec 22  2004 network.pm
-rw-r--r--    1 root     root          1228 Dec  28  2004 perlolddb.pm
-rw-r--r--    1 root     root         3829 Jan 20 13:58 perlnewdb.pm

   head perlolddb.pm
# This file was automatically generated by SWIG
package perlolddb;
require Exporter;
require DynaLoader;
@ISA = qw(Exporter DynaLoader);
package perlolddb;
bootstrap perlolddb;
var_perldb_init();
package perlolddb;
@EXPORT = qw( );

   head perlnewdb.pm
% koi8-r
#% project     : NEWPROJECT
#% module      : database/perl
#% description :
#% author      :  alexeylomov
#% $Id: perlnewdb.pm,v 1.20 2005/01/12 16:02:18 alexey Exp $
package perlnewdb;
use strict;