我有一个 perl 子例程,我想将参数作为散列传递(目的是根据参数“iconsize”包含一个 css)。
我正在使用电话:
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 错误 - 在第 334 行的 CheckBar.pm 中使用“strict refs”时,不能使用字符串(“iconsize”)作为 HASH refs
我在这里做错了吗?还有其他方法可以将我的数据('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,
}
);
}