我如何引用另一个外部函数的参数?

时间:2015-01-23 17:10:45

标签: perl function cgi

我有这段代码:

    for_each($products, sub {
        div({-class => 'product'},
            only_if(is_admin(), sub {
                a({-href => 'remove_product.cgi?id='.$_[0]->{'product_id'}}, 'Bla bla bla')
            }),
            img({
                -src => $_[0]->{'picture'},
                -alt => $_[0]->{'description'}
            }),
            ...

这只是相关的一部分。 only_if是一个带有布尔值和另一个函数的函数,只有当布尔值为true时才执行该函数;但那是无关紧要的。

问题是在$_[0]->{'product_id'}中它试图获取传递给only_if的函数的第一个参数,而不是“main”函数(最外层)。

最简单的引用外部函数参数的方法是什么?

我尝试过:

    for_each($products, sub {
        div({-class => 'product'},
            my $curr = $_[0],
            only_if(is_admin(), sub {
                a({-href => 'remove_product.cgi?id='.$curr->{'product_id'}}, 'Rimuovi prodotto')
            }),
            img({
                -src => $_[0]->{'picture'},
                -alt => $_[0]->{'description'}
            }),

但显然:

  

全局符号“$ curr”需要显式包名称

(在线$curr->{'product_id'})。

1 个答案:

答案 0 :(得分:2)

在您的代码中,$currdiv()调用(第二个参数)后可见,所以很明显您要在它之前声明它,

for_each($products, sub {
    my $curr = $_[0];
    div({-class => 'product'}, ...