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