Forum Webscript.Ru

Программирование => Perl => Тема начата: Phoinix от 14 Мая 2004, 11:58:03

Название: Как правильно указать общие переменные в скриптах?
Отправлено: Phoinix от 14 Мая 2004, 11:58:03
Что-то зациклился с модулями :insane:

Есть общие переменные для всех скриптов, цеплять через require - не особо хочется, но как правильней выбирать эти переменные используя модуль?

Вариант 1 (в модуле просто указать процедуру):


package PH::constant;

use strict;
our(@ISA, @EXPORT);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(SetConstant);

sub SetConstant {
%_ = {
             var1 => \'value1\',
             var2 => \'value2\',
             var3 => \'value3\',
             var4 => \'value4\',
         };
return %_
}

1;
 

Вызов:
use PH::constant;
my %site_vars = SetConstant;

print $site_vars{\'var1\'};


Вариант 2 (объектом);

package PH::constant;

use strict;
our(@ISA, @EXPORT, @EXPORT_OK);
require Exporter;
@ISA = qw(Exporter);

sub new {
    my $self;
    $self = {
             var1 => \'value1\',
             var2 => \'value1\',
             var3 => \'value1\',
             var4 => \'value1\',
                };
   bless $self;
   return $self  
}

1;
 

Вызов:

Вызов:
use PH::constant;
my $site_vars = new PH::constant;

print $site_vars -> {var1};


Вообще этот хеш массив, я еще часто передаю для использования в другие вспомогательные модули, но разница передачи не существенна:

$template -> parce(\\%site_vars); # или
$template -> parce($site_vars);

Вот и никак не могу определиться что использовать лучше...
Название: Как правильно указать общие переменные в скриптах?
Отправлено: commander от 14 Мая 2004, 12:01:49
что на тебе удобнее то и используй... :)
из перечисленных вариантов я бы выбрал второй...
Название: Как правильно указать общие переменные в скриптах?
Отправлено: Phoinix от 14 Мая 2004, 12:32:19
commander
Так дело в том, что я действий над этим объектом (вариант 2) никаких не делаю, я просто получил этот массив и все, но в при первом варианте мне постоянно приходится делать ссылку на этот массив (хотя, впрочем, её можно сделать сразу)...

А что будет меньше использовать ресурсов?
Название: Как правильно указать общие переменные в скриптах?
Отправлено: ondr от 14 Мая 2004, 12:44:21
Можно выбрать явно несуществующий модуль и оспользовать переменные относительно его. Получится эффект действительно глобальных переменных.
Я остановился на несуществующем(в моём случае) модуле s, пример $s::var1, $s::var2

Можно ссылаться на стартовый скрипт $::var1, $::var2. Но это дело вкуса.
Название: Как правильно указать общие переменные в скриптах?
Отправлено: Phoinix от 14 Мая 2004, 12:49:45
ondr
;) Было два решения, теперь три...

Что-то не пойму, а как в твоем варианте их объявлять? точнее где?
Название: Как правильно указать общие переменные в скриптах?
Отправлено: ondr от 14 Мая 2004, 12:53:08
Phoinix
Объявлять присвоением. Где - неважно, главное заранее ;)
Название: Как правильно указать общие переменные в скриптах?
Отправлено: Phoinix от 14 Мая 2004, 13:31:24
ondr
Не совсем пойдет, скрипты, которым нужны эти данные, работают сами по себе, между ними связи практически нет, и насколько я понимаю, данный метод больше ориентирован под mod_perl, что вообщем-то мне не нужно...

Я бы их вообще с удовольствием в базе бы хранил, но некоторые из них как раз переменные для подключения к ней... :)
Название: Как правильно указать общие переменные в скриптах?
Отправлено: ondr от 14 Мая 2004, 13:50:39
А стоп. Похоже я не так тебя понял.
Данный метод догится для создания глобалных переменных.

Хм... А конфигурационные файлы не устраивают?
Название: Как правильно указать общие переменные в скриптах?
Отправлено: Phoinix от 14 Мая 2004, 15:50:04
ondr

Этот модуль как раз и есть конфигурационный файл ;), в нем всего одна процедура определния хеш массива с ключевыми переменными (пути, параметры базы и т.д.)