Автор Тема: Динамическое подключение модулей перла  (Прочитано 7144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сообственно возможно ли такое?
и если да то как?

есл кто непонял вопроса... то могу обьяснить что именно нужно...

Допустим есть  такой то код...

#!/usr/bin/perl

use CGI;
use Image::Magick;

my $CGI = new CGI;

print $CGI->header();
print "Hello world!";

И нам в нем в определенно случае нужен Image::Magick а в определенном нет...
а что то вроде:

if($a=1){ use Image::Magick; }

неработает...

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #1 : 01 Ноября 2005, 11:26:01 »
возможно.
всё работает. только это очень неудобно: потом по всему коду искать где, чего подключали.
if($a=1){ use Image::Magick; } - это чего? м?
пока-пока. :)

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Динамическое подключение модулей перла
« Ответ #2 : 01 Ноября 2005, 12:58:56 »
perldoc -f require
perldoc perlmod

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #3 : 01 Ноября 2005, 15:25:53 »
AnnA

Не у меня такая весчь.... в зависимости от запроса.... должно подключиться только нужное....

Например запрос вывести Список фоток.... зафиг подключат для етого кучу лишних библиотек?

Или например нужно отосать письмо.... тогда уже нужно что то подключить....

А так как все ето у меня должно быть в можно сказать в 1 фаиле index.pl вот и нужно сделать так чтоб лишнее не обрабатывалось =)

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Динамическое подключение модулей перла
« Ответ #4 : 01 Ноября 2005, 15:44:19 »
Kipter
позвольте полюбопытствовать...
>вот и нужно сделать так чтоб лишнее не обрабатывалось =)
у вас index.pl так критично нагружает сервер, что вы подошли к таким радикальным мерам или это просто для красоты?
And no religion too...

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #5 : 01 Ноября 2005, 19:39:36 »
commander
Сложно ответить на такой вопрос... боюсь расписывать нужно долго и подробно =(

Вообщем я так решил из многих домыслов....
Впринципе скрипт должен подгрузить список модулей из массива....

сперва подгружаютя необходмые (конечно необходимость условная но зачем изобретать велосипед если есть CGI) такие как CGI. Получаем запрос... а в зависимости от него из массива модулей грузим их....

и в зависимости от этого скрипт будет себя по разному вести....

ну а в чем сообственно проблема....
посмотрим на такой пример:

#!/usr/bin/perl

if(1 == 5) { use CGI; }

our $CGI = new CGI;

print $CGI->header();
print "OK";

И что самое интересное - модуль CGI подключается! И скрипт пашет.... хотя должна быть ошибка....

Я попробовал так.... берем 2 фаила 1.pl и 2.pl

1.pl:
--------------------------------------
#!/usr/bin/perl

if(1==5){ require "2.pl"; }

our $CGI = new CGI;

print $CGI->header();
print "OK";

--------------------------

2.pl:
------------------------------
use CGI;
1;

-------------------------------

А вот так все пшет! если условие ложно то получаем ошбку что нету у нас CGI что мы и хотели а если истинно то получаем ОК =)

Но меня вот ета фигня  с дополнительными фаилами как бы неустраивает.... ето чтож... если у меня 10 Модулей подрубается... я что 10 фаилов с 2 строчками делать буду?

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Динамическое подключение модулей перла
« Ответ #6 : 02 Ноября 2005, 10:30:05 »
Kipter
1. Perl скрипт сначала компилируеться,  потом исполняеться! НЕ НАОБОРОД.
2. в вашем втором случае результат будет такой же как и в первом... т.е. модуль подгрузиться не смотря на условие.
3. обращаем свой взор к mod_perl.
And no religion too...

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #7 : 03 Ноября 2005, 01:10:24 »
commander
RE 1: Да, забыл забыл... Интепретаторы всетаки компилируют исходный код в машиннный только это делают каждый раз....
Перл же это не скрипт... поэтому действительно выполнение идет уже откомпилированного кода....

Но тогда я непонимаю как проводится такая фишка..... делаем 3 фаила.... 1.pl 2.pl 3.pl

Цитировать

[1.pl]
#!/usr/bin/perl

print "Enter a name of a file which it is necessary to load (2.pl || 3.pl): ";
$name = <>; chomp $name;

require $name;

print "Press any key for end";
<>;

[2.pl]
print "It is a file number 2\\n";

[3.pl]
print "The file 3 is loaded\\n";


Ну вот, вводим имя фаила 2.pl получаем одно сообщение, вводим имя фаила 3.pl получаем другое.... да и вообще какой фаил не прикажи такое мы и получим.....

Может обьсните тогда что же сперва компилируется а что-же исполняется =) =) =)

Или Сперва компилируется, потом исполняется, потом докомпилируется, доисполняется =) =) =)

Перл гибок =)

Оффлайн Pegaz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #8 : 03 Ноября 2005, 08:15:30 »
В фазу компеляции подключаются те модули, которые подключане с помощью юза, причём это делается в самом начале скрипта, и модули подключаются в том порядке, в котором их нашёл парсер в скрипте. Рекваи же подключаются уже когда скрипт откомпилирован... именно поэтому рекваи и замедляют работу скрипта.

ЗЫ: под компиляцией тут понимается не та компиляция как в С++, а псевдокомпиляциия перла.

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #9 : 03 Ноября 2005, 09:30:29 »
Pegaz
И сильно ли замедлют работу эти Рекваи?
у меня все запчати скрипта рекваем грузятся =)

толко если нагрузка незначительна думаю и смысла нет отказываеться от рекваев....

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Динамическое подключение модулей перла
« Ответ #10 : 03 Ноября 2005, 09:39:13 »
Цитировать
толко если нагрузка незначительна

если нагрузка незначительна... к чему вообще все вышесказаное?
And no religion too...

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #11 : 03 Ноября 2005, 11:04:53 »
commander
А я вот лично езнаю значительная она или незначительная =)
Вот его и спрашиваю... при большом количестве подключаемых фаилов имеет ли место реквай?

Он ведь сказал:
Цитировать
Рекваи же подключаются уже когда скрипт откомпилирован... именно поэтому рекваи и замедляют работу скрипта.


Вот я подумал а может и не стоит?

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Динамическое подключение модулей перла
« Ответ #12 : 03 Ноября 2005, 12:47:13 »
Kipter
используй use ...
And no religion too...

Оффлайн Kipter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 19
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Динамическое подключение модулей перла
« Ответ #13 : 03 Ноября 2005, 17:30:37 »
commander

Ох какой совет =) ну да... буду я подключать 40 Фаилов.....
из которых только в 1 та фукция что будет использоваться =)

Я думаю что тут require больше подходит.... а впринципе на практике проверю....
Просто думал мож кто на этом форуме сталкивался с таким... дабы мне на грабли не наступать.... а оказывается придется самому проверить....

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Динамическое подключение модулей перла
« Ответ #14 : 03 Ноября 2005, 17:49:29 »
perldoc autouse
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28