У меня есть подпрограмма Perl, где я хотел бы передать параметры в виде хэша
(цель состоит в том, чтобы включить CSS в зависимости от параметра 'iconsize').
Я использую звонок:
get_function_bar_begin('iconsize' => '32');
для подпрограммы get_function_bar_begin:
use strict;
...
sub get_function_bar_begin
{
my $self = shift;
my %template_params = %{ shift || {} };
return $self->render_template('global/bars /tmpl_incl_function_bar_begin.html',%template_params);
}
Почему это приводит к сообщению об ошибке:
Ошибка при выполнении режима запуска 'start': ошибка undef - Невозможно использовать строку ("iconsize") в качестве ссылки HASH, когда используются "строгие ссылки" на CheckBar.pm в строке 334
Я что-то здесь не так делаю?
Есть ли другой способ отправить мои данные ('iconsize') в виде хэша?
(я все еще новичок в Perl)
РЕДАКТИРОВАТЬ: Решение, которое работало для меня . Я не менял звонок, но моя функция:
sub get_function_bar_begin
{
my $self = shift;
my $paramref = shift;
my %params = (ref($paramref) eq 'HASH') ? %$paramref : ();
my $iconsize = $params{'iconsize'} || '';
return $self->render_template('global/bars/tmpl_incl_function_bar_begin.html',
{
'iconsize' => $iconsize,
}
);
}