Re: Снова подключение модулей во время вып о лнения
- From
- Andrei Protasovitski (2:450/186)
- To
- Artem Chuprina
- Date
- 2005-08-03T10:33:02Z
- Area
- RU.PERL
From: Andrei Protasovitski <andrei@siliconmaterials.com>
Reply-To: andrei@siliconmaterials.com
Доброго здоровья!
Artem Chuprina пишет:
> >> Вышеупомянутым способом ты старательно раскладываешь себе грабли.
> AP> Какие? Я не вижу потенциальных трудностей. Покажи.
> Таким образом ты фактически делаешь my-переменные глобальными.
В принципе, мне это и нужно.
> >> Вместо того, чтобы использовать our, если нужны глобальные переменные.
> AP> Я не хочу использовать глобальные переменные, в том-то и дело, хотя,
> AP> похоже, придется.
> Можно оформить включаемый файл как модуль и импортировать из него только
> то, что надо. Ну и в нем разрешать импортировать только то, что
> можно... Есть в принципе и другие альтернативы, все зависит от задач.
> Так, объекты в использующем библиотеку скрипте обычно получают в
> качестве возвращаемых значений функции. А то, что создавалось там
> внутри, снаружи видеть ни к чему.
Я сейчас схематично набросаю, что было и к чему я стремлюсь.
Было:
[-=cut=-]
#!perl
# Загрузка модулей
use A;
use B;
use C;
use D;
...
# Объявление глобальных переменных (хэшей)
# Чтение стандартного ввода
# Чтение файлов конфигурации
# Инициализация объектов класса A
# Инициализация объектов класса B
# Инициализация объектов класса C
# Инициализация объектов класса D
...
# Основная функциональность
# Расширение 1
# Расширение 2
# Расширение 3
# Расширение 4
...
[-=cut=-]
Для работы программы обязательно нужны модуль A, модуль B, их объекты и
основная функциональность. В зависимости от переданных параметров,
файлов конфигурации и переменных окружения (это CGI-скрипт) могут
понадобиться расширения, для некоторых из которых необходимы модули C
и/или D и их объекты. Расширения (оформлены как процедуры) я вынес в
отдельные файлы, они подгружаются по require и никаких хлопот не
доставляют. А вот модули, точнее инициализация объектов вызывают трудности.
Хотя я тут сделал ревизию и пришел к выводу, что ничего страшного не
случится, если я объявлю еще парочку глобальных переменных.
--
Andrei Protasovitski mailto:andrei()siliconmaterials.com
http://www.siliconmaterials.com/ ICQ: 75725244
Pinsk, Belarus
--- Mozilla Thunderbird 1.0.6 (Windows/20050716)
* Origin: -= http://fido.ext.by (sponsored by http://extmedia.com) (2:450/186)
SEEN-BY: 50/203 400/462 814 450/186 451/30 4635/4 5000/5000 5001/5001 5010/53
SEEN-BY: 5012/8 46 5015/10 5020/52 154 175 400 545 549 715 758 830 1523 1604
SEEN-BY: 5020/2020 2142 2238 2590 4441 5021/3 29 5022/128 5025/3 750 5027/16
SEEN-BY: 5030/49 115 556 966 1063 1339 1900 5031/47 70 5033/21 5040/47 5042/13
SEEN-BY: 5045/7 5053/16 5054/1 8 9 35 36 37 45 66 67 81 85 5061/120 5062/1 10
SEEN-BY: 5064/39 5069/7 5070/1222 5077/80 5080/80 1003 5082/6 5083/21 5085/13
SEEN-BY: 5090/108 113 5095/20 6000/12
PATH: 450/186 5020/4441 545 5054/1 37