Re: Снова подключение модулей во время вып о лнения

From
Andrei Protasovitski (2:450/186)
To
Artem Chuprina
Date
2005-08-02T14:57Z
Area
RU.PERL
From: Andrei Protasovitski <andrei@siliconmaterials.com>
Reply-To: andrei@siliconmaterials.com

Доброго здоровья!

Artem Chuprina пишет:
>  AP> Да модуль грузится через require без лишних телодвижений. Проблема в 
>  AP> том, что созданные объекты и переменные видны только в пределах 
>  AP> подгружаемого файла.
>  AP> Первое, что пришло в голову:
>  AP> [-=cut=-]
>  AP> my $separator = $/;
>  AP> undef $/;
>  AP> open(SCRIPT, "path/to/the/script.pl") or die "Cannot load the script: $!";
>  AP> my $script = <SCRIPT>;
>  AP> eval $script;
>  AP> $/ = $separator;
>  AP> [-=cut=-]
>  AP> В принципе, можно написать процедуру, возвращающую $script. Как правило, 
>  AP> код инициализации небольшой, так что большой нагрузки на память не будет.
> Рекомендую вместо этого почитать умную книжку про perl.  my-переменные
> таки да, будут видны только в пределах файла, но это фича, а не баг.

Кто бы спорил.

> Вышеупомянутым способом ты старательно раскладываешь себе грабли.

Какие? Я не вижу потенциальных трудностей. Покажи.

> Вместо того, чтобы использовать our, если нужны глобальные переменные.

Я не хочу использовать глобальные переменные, в том-то и дело, хотя, 
похоже, придется.

-- 
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