Forum Webscript.Ru
Программирование => Perl => Тема начата: Troum от 26 Декабря 2002, 13:49:20
-
Имеются модули, которые хостер по своим соображениям отказывается подключать к перлу. Слышал, что проблема может решиться через @INC, т.е добавить полный путь к модулю, который накодится в некоем каталоге.
Добавляю push (@INC, \'полный путь\');
далее use некий модуль;
и выходит ошибочка,
перл выдает Can\'t locate моймодуль.pm in @INC (@INC contains: ....... далее идет содержимое @INC, но \'полный путь\' (то что я добавлял) отсутствует.
Что неправильно?
-
use lib \'/home/my_path/www/\';
Туда кладешь модули.
Только с модулями, которые имеют Cи-шную часть, так не получится...
-
вот именно что сишная часть присутствует :(
ситуация безвыходная?
-
Да нет, если не лень разобрать эту часть и написать на чистом Perl.
Что за модуль-то?
-
Да вот нашел интересную вещь, кстати хорошо бы знать мнение профи
http://www.dklab.ru/chicken/nablas/4.html
http://www.dklab.ru/chicken/nablas/6.html
Модули соответственно CGI::WebIn, CGI::WebOut
-
Опять?
Я буду молчать ;)
-
хммм, а в чем собственно дело?
кривые? Гонял их локально под винды - понравилось
Может скажешь все таки пару строк про них
-
Отвечу линком: http://www.xpoint.ru/archive/threads/28/5615.html
-
оки, вернемся к нашим баранам :)
Вопрос в том, как их подключить-то?
-
и как воспользоваться @INC (данный путь посоветовал хостеровый админ )?
-
Дык автор-то русский...
E-mail: chicken@dklab.ru
-
данный путь посоветовал хостеровый админ
Если так что бы было понятно - слушай:
Этот массив содержит перечень путей где Perl следует искать вызываемые модули. Как добавить путь где будут лежать твои модули я уже описал.
У тебя же задача совершенно другая - "собрать" модуль на сервере.
-
угу, уже понятно
но поскольку со "сборкой" сторонних модулей не сталкивался, может распишешь чуть поподробнее, плиз? :)
-
Хм... Tут долго рассказывать нечего.
Открываешь mymodule.c смотришь что он делает - пишешь на Perl более тормозную и с багами реализацию. Вот и вся любовь
-
use lib \'/home/my_path/www/\';
Туда кладешь модули.
такой вопросец: туда кладутся *.pm?
-
да,
если use Mtmod; - Mtmod.pm
а если use Mtmod::Test; - /Mtmod/Test.pm
-
а с правами как?
755, как для скриптов?
-
Нафиг ему исполнение и изменение?
Только чтение - 444
-
Взял модуль без сишных дел, кинул в каталог ....../cgi-bin/modules/CGI
в скрипте прописал:
BEGIN { unshift @INC, "...../cgi-bin/modules" };
use CGI::WebOut;
Что получилось:
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC ........
-
Подключи модуль через use lib
и зачем unshift @INC, "...../cgi-bin/modules"?
-
оки, изменил на
use lib \'........./cgi-bin/modules\';
use CGI::WebOut;
вышло тож самое :(
в доке на http://www.xpoint.ru/cgi-bin/perldoc.cgi?pod=lib
идет речь о проверке $dir/$archname/auto exists
что за оно?
-
Ты мне всю строку ошибки покажи. И путь в use lib тоже покажи.
-
скрипт:
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
-
А модуль ты положил куда? Путь /usr/home/hosting/respublikainfo/cgi-bin/modules/WebOut/autosplit.ix верен?
-
модуль кинул в ......../cgi-bin/modules/CGI
а что такое autosplit.ix ?
-
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC
Ты с путями намудрил. Проверь еще раз.
[OFF]Только я сомневаюсь что он заработает[/OFF]
-
мда, вроде все проверил, и так пробовал и сяк
не жет он найти этот autosplit.ix. Что за он???
К модулю не прилагается, где взять?
-
К модулю не прилагается, где взять?
1-й вариант - Проверь где он вызывается.
2-й вариант - Напиши письмо по адресу который я давал выше.
Что за он???
Сорри, но даже по такому случаю я ставить его и проверять правильность не буду.
-
Это то понятно ;) , тем не менее спасибо за помощь
возвращаясь к сабжу - не выскочит ли подобная хрень, ежели я свой модулек (увы, ненаписанный еще) подобным обрзом подключать буду?
Просто в доке сказано
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?
-
Нет не выскочит.
Это и много еще интересного ты узнаешь из документации по соданию модулей. Этот вопрос не совсем корректен. Я могу ответить только - когда как. Иногда нужно (но не ручками) а в большинстве случаях нет.
-
Что получилось:
Can\'t locate auto/CGI/WebOut/autosplit.ix in @INC ........
В auto лежат бинарные части модулей.
Может модуль все-таки имеет бинарную часть?
Можно попробовать создать auto и в поддиректорию модуля положить autosplit.ix состоящий только из 1;.