Что-то зациклился с модулями :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);
Вот и никак не могу определиться что использовать лучше...