Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Встака модуля перл прямо в код программы 
V
    Опции темы
rcdimon
Дата 11.1.2006, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Как можно объеденить модуль перла и программу... ЧТо бы не нужно было устанавливать модуль! Потому что часто у хостинг провайдеров с этим проблемы. Не хотят устанавливать и все... А иногда хочется немного отредактировать код модуля smile ЧТо бы подогнать его под себя. А когда установят программу на другую машину все будет испорчено...

Как объеденить? Что бы файл с модулем был бы отдельным файлом в CGI-BIN и подключался чем нить типа use или require
PM MAIL ICQ   Вверх
korob2001
Дата 11.1.2006, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Если модуль написан на Perl и не зависит от других модулей которые не установлены у твоего хостера, то можешь просто скопировать его в какой-нить каталог, а затем в начале файла, который будет подключать этот модуль указать:
Код

use lib qw( путь/к/каталогу/с/твоими/модулями );
use Image::Info;

Я привёл пример с очень полезным, но в то же время не везде установленом, модуле Image::Info.
Кстати, вовсе не обязательно модули хранить в каталоге /cgi-bin, их можно вообще хранить на уровень выше корневого каталога с правами 0664, правда у каталога должны быть права 0755.

PS: вот здесь можешь скачать "Руководство по установке модулей" от sharq, там помоему есть описание того, что тебе нужно.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 11.1.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



А если я кроме установленных локально модулей использую еще другие, нормально установленные, модули, то как мне быть?

строка

Код

use lib qw( путь/к/каталогу/с/твоими/модулями );    



Как я понимаю вообще изменит путь где Перл будет искать модули? И тогда все остальные модули он будет искать там же.. Или нет?

Или сначала присоединять нормальные модула, а потом локальные:

Код

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

use lib qw( путь/к/каталогу/с/твоими/модулями );    

use Image::Info;


И еще вопрос... путь/к/каталогу/с/моими/модулями как должен выглядеть? Он должен быть абсолютный? То есть начинаться с /home/httpd/mysite.ru/ и т.д. Или он должен начинаться с другого места?

Спасибо за ответ.
PM MAIL ICQ   Вверх
korob2001
Дата 11.1.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

А если я кроме установленных локально модулей использую еще другие, нормально установленные, модули, то как мне быть?

Раскручивать хостера, либо попробовать написать программу, которая будет устанавливать модуль в определённый каталог, а потом указывать этот путь в lib.
Цитата

Как я понимаю вообще изменит путь где Перл будет искать модули? И тогда все остальные модули он будет искать там же.. Или нет?

rcdimon - да ну smile , на такие вопросы, честно говоря, не хочется и отвечать. Не быстрее ли будет взять, да пропробовать самому, для начала набрать perldoc lib или запустить такой код?
Код

#!/usr/bin/perl
# Этот модуль находится в стандартном каталоге модулей PERL
use CGI;
# Добавляем в массив @INC ещё и такой "библиотечный" путь  
use lib qw( /home/localhost/my/Mod ); 
# Подключаем собственный класс из собственной библиотеки
use MyClass; 

Если после запуска не получишь сообщение об ошибке, что не найден пакет MyClass из всех перечисленных бибилиотек в массиве @INC, то значит PERL находит и стандартные библиотеки и твою собственную. smile
Вобщем use lib '';, это тоже самое что и:
Код

BEGIN { unshift( @INC, "/путь/к/твоей/библиотеке" ) };

Т.е. просто на этапе компиляции добавляется ещё один путь к библиотекам PERL, а тот в свою очередь ищет модули в тех библиотеках, которые перечислены в этом массиве.
Цитата

И еще вопрос... путь/к/каталогу/с/моими/модулями как должен выглядеть? Он должен быть абсолютный? То есть начинаться с /home/httpd/mysite.ru/ и т.д. Или он должен начинаться с другого места?

Лично я всегда использую полный путь /home/localhost/и/тд , это очень удобно когда ты располагаешь свою библиотеку выше в иерархии, относительно корневого каталога. Но можно указывать и просто:
Код

use lib qw(.);   # Искать модули в том же каталоге, где находится скрипт
use lib qw( MyLib/ ); # Искать в каталоге MyLib/, который находится в томже каталоге, где находится скрипт.


Это сообщение отредактировал(а) korob2001 - 11.1.2006, 16:58


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 11.1.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



ОК. огромное пасиба
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.