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