new(\%config)
Метод конструктора, который принимает в качестве параметров ссылку на хеш или
массив пар 'name => value' , которые сохраняются в хеш. Затем
вызывается метод _init(), которому передается хеш конфигурации и который должен
вернуть истинное или ложное значение в зависимости от успешного или неудачного
выполнения. Любое сообщение об ошибке может быть получено через метод класса
error() или напрямую из переменной пакета ERROR производного класса.
my $module = My::Module->new({ ... })
|| die My::Module->error(), "\n";
my $module = My::Module->new({ ... })
|| die "constructor error: $My::Module::ERROR\n";
error($msg, ...)
Может быть вызван как метод объекта для получения/установки внутренней
переменной _ERROR или как метод класса для получения/установки переменной
$ERROR пакета производного класса.
my $module = My::Module->new({ ... })
|| die My::Module->error(), "\n";
$module->do_something()
|| die $module->error(), "\n";
При вызове с аргументами (несколько параметров склеиваются) этот метод
устанавливает соответствующую переменную и возвращает undef. Это наиболее
часто используется внутри методов объекта для сообщения об ошибках
вызывающей функции.
package My::Module;
sub foobar {
my $self = shift;
# какой-то код...
return $self->error('some kind of error...')
if $some_condition;
}
debug($msg, ...)
Генерирует отладочное сообщение, склеивая в строку все переданные
аргументы, и посылает его на STDERR. Добавляется префикс, указывающий
на вызывающий модуль.
package My::Module;
sub foobar {
my $self = shift;
$self->debug('called foobar()');
# какой-то код...
}
Когда вызывается метод foobar(), на STDERR отправлется следующее
сообщение:
[My::Module] called foobar()
Объекты могут устанавливать внутреннюю переменную DEBUG, которую
проверяет метод debug(). Если у этой переменной установлены
биты, обозначающие DEBUG_CALLER, то к сообщению будут добавлены
имя файла и строка вызывающего модуля.
use Template::Constants qw( :debug );
my $module = My::Module->new({
DEBUG => DEBUG_SERVICE | DEBUG_CONTEXT | DEBUG_CALLER,
});
$module->foobar();
Сгенерируется следующее сообщение:
[My::Module] called foobar() at My/Module.pm line 6
|