Forum Webscript.Ru

Программирование => Perl => Тема начата: Troum от 26 Декабря 2002, 13:49:20

Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 13:49:20
Имеются модули, которые хостер по своим соображениям отказывается подключать к перлу. Слышал, что проблема может решиться через @INC, т.е добавить полный путь к модулю, который накодится в некоем каталоге.
Добавляю push (@INC, \'полный путь\');
далее use некий модуль;
и выходит ошибочка,
перл выдает Can\'t locate моймодуль.pm in @INC (@INC contains: .......   далее идет содержимое @INC, но \'полный путь\'  (то что я добавлял) отсутствует.
Что неправильно?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 14:07:46
use lib \'/home/my_path/www/\';
Туда кладешь модули.
Только с модулями, которые имеют Cи-шную часть, так не получится...
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 14:23:10
вот именно что сишная часть присутствует :(
ситуация безвыходная?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 14:29:58
Да нет, если не лень разобрать эту часть и написать на чистом Perl.
Что за модуль-то?
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 14:33:36
Да вот нашел интересную вещь, кстати хорошо бы знать мнение профи
http://www.dklab.ru/chicken/nablas/4.html
http://www.dklab.ru/chicken/nablas/6.html

Модули соответственно CGI::WebIn, CGI::WebOut
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 14:51:19
Опять?
Я буду молчать ;)
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 15:14:20
хммм, а в чем собственно дело?
кривые? Гонял их локально под винды - понравилось
Может скажешь все таки пару строк про них
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 15:31:44
Отвечу линком: http://www.xpoint.ru/archive/threads/28/5615.html
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 15:48:12
оки, вернемся к нашим баранам :)
Вопрос в том, как их подключить-то?
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 15:52:39
и как воспользоваться @INC (данный путь посоветовал хостеровый админ )?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 15:52:44
Дык автор-то русский...
E-mail: chicken@dklab.ru
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 16:21:19
Цитировать
данный путь посоветовал хостеровый админ

Если так что бы было понятно - слушай:
Этот массив содержит перечень путей где Perl следует искать вызываемые модули. Как добавить путь где будут лежать твои модули я уже описал.
У тебя же задача совершенно другая - "собрать" модуль на сервере.
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 16:30:06
угу, уже понятно
но поскольку со "сборкой" сторонних модулей не сталкивался, может распишешь чуть поподробнее, плиз? :)
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 16:36:58
Хм... Tут долго рассказывать нечего.
Открываешь  mymodule.c смотришь что он делает - пишешь на Perl более тормозную и с багами реализацию. Вот и вся любовь
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 17:34:25
Цитировать
use lib \'/home/my_path/www/\';
Туда кладешь модули.

такой вопросец: туда кладутся *.pm?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 18:03:03
да,
если use Mtmod; - Mtmod.pm
а если use Mtmod::Test; - /Mtmod/Test.pm
Название: Помогите разобраться с @INC
Отправлено: Troum от 26 Декабря 2002, 18:17:05
а с правами как?
755, как для скриптов?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 26 Декабря 2002, 18:22:16
Нафиг ему исполнение и изменение?
Только чтение - 444
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 13:23:22
Взял модуль без сишных дел, кинул в каталог ....../cgi-bin/modules/CGI
в скрипте прописал:
BEGIN { unshift @INC, "...../cgi-bin/modules" };
use CGI::WebOut;


Что получилось:
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC ........
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 13:28:31
Подключи модуль через use lib
и зачем unshift @INC, "...../cgi-bin/modules"?
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 13:39:26
оки, изменил на
use lib  \'........./cgi-bin/modules\';
use CGI::WebOut;

вышло тож самое :(

в доке на http://www.xpoint.ru/cgi-bin/perldoc.cgi?pod=lib
идет речь о проверке $dir/$archname/auto exists
что за оно?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 13:47:13
Ты мне всю строку ошибки покажи. И путь в use lib тоже покажи.
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 14:08:43
скрипт:
use lib  \'/usr/home/hosting/respublikainfo/cgi-bin/modules\';
use CGI::WebOut;

Ошибка:
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC (@INC contains: /usr/home/hosting/respublikainfo/cgi-bin/modules /usr/libdata/perl/5.00503/mach /usr/libdata/p
erl/5.00503 /usr/local/lib/perl5/site_perl/5.005/i386-freebsd /usr/local/lib/per
l5/site_perl/5.005 .) at /usr/libdata/perl/5.00503/AutoLoader.pm line 127.
 at /usr/home/hosting/respublikainfo/cgi-bin/modules/CGI/WebOut.pm line 182
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 14:13:19
А модуль ты положил куда? Путь /usr/home/hosting/respublikainfo/cgi-bin/modules/WebOut/autosplit.ix верен?
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 14:18:18
модуль кинул в ......../cgi-bin/modules/CGI
а что такое autosplit.ix ?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 14:43:24
Цитировать
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC

Ты с путями намудрил. Проверь еще раз.
[OFF]Только я сомневаюсь что он заработает[/OFF]
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 15:15:39
мда, вроде все проверил, и так пробовал и сяк
не жет он найти этот autosplit.ix. Что за он???
К модулю не прилагается, где взять?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 15:22:11
Цитировать
К модулю не прилагается, где взять?

1-й вариант - Проверь где он вызывается.
2-й вариант - Напиши письмо по адресу который я давал выше.
Цитировать
Что за он???

Сорри, но даже по такому случаю я ставить его и проверять правильность не буду.
Название: Помогите разобраться с @INC
Отправлено: Troum от 27 Декабря 2002, 15:27:24
Это то понятно ;) , тем не менее спасибо за помощь
возвращаясь к сабжу - не выскочит ли подобная хрень, ежели я свой модулек (увы, ненаписанный еще) подобным обрзом подключать буду?
Просто в доке сказано
Цитировать
use lib LIST;

Цитировать
For each directory in LIST (called $dir here) the lib module
also checks to see if a directory called $dir/$archname/auto exists.

Не надо ли вручную создавать каталог auto?
Название: Помогите разобраться с @INC
Отправлено: NeoNox от 27 Декабря 2002, 15:56:58
Нет не выскочит.
Это и много еще интересного ты узнаешь из документации по соданию модулей. Этот вопрос не совсем корректен. Я могу ответить только - когда как. Иногда нужно (но не ручками) а в большинстве случаях нет.
Название: Помогите разобраться с @INC
Отправлено: Chs от 27 Декабря 2002, 23:40:34
Цитировать
Что получилось:
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC ........

В auto лежат бинарные части модулей.
Может модуль все-таки имеет бинарную часть?

Можно попробовать создать auto и в поддиректорию модуля положить autosplit.ix состоящий только из 1;.