Есть некий модуль perlnewdb.pm который необходимо использовать в скрипте.
Но вот какая сложность: он лежит в нестандартном месте ( /usr/local/extern/lib/perl )
И он должен там остаться, но при запуске скрипта perl ругается, что модуль не найден
(так как он его ищет в стандартных директориях).
Пишет Can't locate perlnewdb.pm in @INC (@INC contains: <список_директорий>)
Так вот, никак не могу найти, где этот @INC находится. Кто-нибудь может подсказать?
Вопрос снят, прошу прощения за тупость :)
Новый вопрос: а если используемый модуль тоже включает в себя другой модуль из /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 в списке есть?
use lib qw(/usr/local/extern/lib/perl);
>use lib qw(/usr/local/extern/lib/perl);Ничего не изменилось :(
Заметьте, он пишет не Can't locate perlolddb.pm in @INC, a Can't locate loadable object for module perlolddb in @INC
>Заметьте, он пишет не Can't locate perlolddb.pm in @INC, a Can't locate
>loadable object for module perlolddb in @INC
use lib ... нужно писать в pakage, который будет подгружать модули из этой директории.
>use lib ... нужно писать в pakage, который будет подгружать модули из
>этой директории.Так я там и пишу (в perlnewdb.pm) сразу после надписи use perlolddb;
Снова здравствуйте. Проблему я так и не решил.
Опишу ещё раз всё подробнее:
Есть скрипт, который использует библиотеку 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); - не помогает.
Подскажите, пожалуйста, что нужно сделать?
>Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
добавляли в библиотек или в основной скрипт?
>>Пробовал добавлять строку use lib qw(/usr/local/extern/lib/perl); - не помогает.
>добавляли в библиотек или в основной скрипт?Добавлял в библиотеку perlnewdb.pm сразу после строки use perlolddb; - не помогало.
В основной скрипт тоже пробовал добавлять - ничего.
И даже в perlolddb.pm добавлял.
Я это так делаю:1. Модуль Mymodule.pm содержит класс PROJECT::Mymodule и лежит в
каком-нибудь /usr/local/extern/lib/perl/PROJECT.
2. В стандартном месте (какой-нибудь /etc/httpd/perl) делаю symlink
PROJECT -> /usr/local/extern/lib/perl/PROJECT.
>Добавлял в библиотеку perlnewdb.pm сразу после строки use perlolddb; - не помогало.
нужно ДО use perlolddb;
тк use lib qw(/usr/local/extern/lib/perl); - добавляет /usr/local/extern/lib/perl к путям для поиска библиотек
>нужно ДО use perlolddb;
>тк use lib qw(/usr/local/extern/lib/perl); - добавляет /usr/local/extern/lib/perl к путям для поиска
>библиотекНаписал до use perlolddb; - не помогло. А путь этот там уже итак был.
Дело, видимо, в чём-то другом...
>Снова здравствуйте. Проблему я так и не решил.
>Опишу ещё раз всё подробнее:
>Есть скрипт, который использует библиотеку 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
>покажи
>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.pmhead 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;