将perl散列与HTML::Template param()合并

qojgxg4l  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(172)

我有一个多维哈希。有时候,当只有一个哈希时,我想把这个哈希发送到一个特定的HTML::Template文件中。
我读到过可以像这样合并两个哈希:
@hash1{ keys %hash2 } = values %hash2;
但是在我的场景中,我希望哈希中的所有键和值都被发送到模板文件。
我想避免的是:

$template->param(
  param1 => $myhash{'param1'},
  param2 => $myhash('param2'),
  paramX => $myhash('paramX'),
  name   => "Bob",
);

我想要这样的东西:

$template->param(
  { keys %myhash } = values %myhash,
  name => "Bob"
);

但我想那是行不通的。
有什么想法吗?
此代码返回错误HTML::Template->param() : You gave me an odd number of parameters to param()!

my %myhash = ( '9343X' => { 'param1' => 'Walter', 'param2' => 'Blue', 'param3' => 513 } );

$items = scalar (keys %myhash);

if ($items == 1) {
  my ($firstkey) = %myhash;
  $template->param(
    $myhash{$firstkey},
    name => "Bob"
  );
}

但是,如果我用$param1 = $myhash{$firstkey}{'param1'}替换$myhash{$firstkey},它就可以正常工作。

6tqwzwtp

6tqwzwtp1#

列表上下文中的哈希生成成对的键值标量列表。

$template->param(
  %myhash,
  name => "Bob"
);

相关问题