映射perl从值循环

时间:2015-02-11 18:13:21

标签: perl mason

我无法理解为什么以下代码无效。

<%method getvivekBox>
  <%args>
   $BoxName
  </%args>

  <%perl>
    return {
      type        => 'vivek',
    };
  </%perl>
</%method>




<%method getAll>
 <%args>
  $BoxGroup
  $indexex
 </%args>
  <%perl>
    my $x =  map { $m->comp('SELF:getvivekBox' , BoxName => "$BoxGroup-$_"); } @$indexex;

    return $x;
  </%perl>
</%method>

我使用参数,框和getAll调用(1..10)。它返回11但我预期的行为应该返回10个元素。

1 个答案:

答案 0 :(得分:3)

列表上的

map会生成另一个列表。您要将map的结果分配给标量,从而获得分配给$x的元素数。

$x更改为@x,或将[]放在map周围(使$x成为数组引用)。