Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Встака модуля перл прямо в код программы |
Автор: rcdimon 11.1.2006, 01:10 |
Как можно объеденить модуль перла и программу... ЧТо бы не нужно было устанавливать модуль! Потому что часто у хостинг провайдеров с этим проблемы. Не хотят устанавливать и все... А иногда хочется немного отредактировать код модуля ![]() Как объеденить? Что бы файл с модулем был бы отдельным файлом в CGI-BIN и подключался чем нить типа use или require |
Автор: korob2001 11.1.2006, 05:12 | ||
Если модуль написан на Perl и не зависит от других модулей которые не установлены у твоего хостера, то можешь просто скопировать его в какой-нить каталог, а затем в начале файла, который будет подключать этот модуль указать:
Я привёл пример с очень полезным, но в то же время не везде установленом, модуле Image::Info. Кстати, вовсе не обязательно модули хранить в каталоге /cgi-bin, их можно вообще хранить на уровень выше корневого каталога с правами 0664, правда у каталога должны быть права 0755. PS: вот здесь можешь скачать "http://forum.vingrad.ru/index.php?act=Attach&type=post&id=514481" от http://vingrad.ru/@sharq, там помоему есть описание того, что тебе нужно. |
Автор: rcdimon 11.1.2006, 13:02 | ||||
А если я кроме установленных локально модулей использую еще другие, нормально установленные, модули, то как мне быть? строка
Как я понимаю вообще изменит путь где Перл будет искать модули? И тогда все остальные модули он будет искать там же.. Или нет? Или сначала присоединять нормальные модула, а потом локальные:
И еще вопрос... путь/к/каталогу/с/моими/модулями как должен выглядеть? Он должен быть абсолютный? То есть начинаться с /home/httpd/mysite.ru/ и т.д. Или он должен начинаться с другого места? Спасибо за ответ. |
Автор: korob2001 11.1.2006, 16:54 | ||||||||||||
Раскручивать хостера, либо попробовать написать программу, которая будет устанавливать модуль в определённый каталог, а потом указывать этот путь в lib.
rcdimon - да ну ![]()
Если после запуска не получишь сообщение об ошибке, что не найден пакет MyClass из всех перечисленных бибилиотек в массиве @INC, то значит PERL находит и стандартные библиотеки и твою собственную. ![]() Вобщем use lib '';, это тоже самое что и:
Т.е. просто на этапе компиляции добавляется ещё один путь к библиотекам PERL, а тот в свою очередь ищет модули в тех библиотеках, которые перечислены в этом массиве.
Лично я всегда использую полный путь /home/localhost/и/тд , это очень удобно когда ты располагаешь свою библиотеку выше в иерархии, относительно корневого каталога. Но можно указывать и просто:
|
Автор: rcdimon 11.1.2006, 21:14 |
ОК. огромное пасиба |