首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl <TMPL_LOOP>问题

Perl <TMPL_LOOP>问题
EN

Stack Overflow用户
提问于 2012-08-23 21:13:24
回答 1查看 332关注 0票数 0

我正在编写一个Perl脚本,但是我遇到了一个我无法真正克服的问题。下面是我的代码:

代码语言:javascript
复制
my @rowses = ();


while ( @list = $sth->fetchrow_array())
{
    %row = ();

    if($list[30] == 1) 
      %row = (
            cod_cliente => $list[1],
            rag_soc => $list[2], 
            p_iva => $list[11],
            IDanagrafica => $list[0],
            tabella => $tab,
            IDanagraficaE => $list[0],
            tabellaE => $tab,
            checkbox => "checked",
            );
    $LOL = \%row;
    print $cgi->p($LOL);
}
else
{
    %row = (
            cod_cliente => $list[1],
            rag_soc => $list[2], 
            p_iva => $list[11],
            IDanagrafica => $list[0],
            tabella => $tab,
            IDanagraficaE => $list[0],
            tabellaE => $tab,
            checkbox => "",
            );
    $LOL = \%row;
    print $cgi->p($LOL);
}

push (@rowses, \%row);
}

 $template->param(table => \@rowses);   
$template->param(tab => $tab);

当我尝试打印对行的引用($LOL)以进行调试时,它什么也不打印,而当我打印@rowses处的引用时,它是一个充满所有相同散列的数组,最后一个散列是从语句中获取的。

奇怪的是,如果我每次打印一个哈希行,而没有引用它,它会很好地打印它们,而且是所有的。

我这样做是为了将包含所有散列的数组引用传递给一个TMPL_LOOP,并打印它们;但它只打印一个很长的列表,其中只包含最后获取的行。

提前感谢每一个愿意帮助我的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-23 21:25:25

对于while循环的每次迭代,%row都是相同的变量。您只将对它的引用存储在@rowses中,这意味着如果您更改了%row,所有引用都指向更改后的散列。您应该为循环的每次迭代定义一个新的%row,例如,使用

代码语言:javascript
复制
my %row;

索引,共

代码语言:javascript
复制
%row = ();

为什么不打印$LOL :如果p的第一个参数是散列引用,它将被解释为<p>的属性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12092417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档