如何将函数作为参数传递给Perl中的另一个函数然后调用它?

时间:2016-04-01 00:40:58

标签: perl

我是Perl的新手。我只需要发送一个将两个参数带到另一个函数的通用函数,然后从第二个函数内部调用第一个函数。我不太清楚如何做到这一点。这是我想写的代码。

sub add { return $_[0] + $_[1]; }
sub subt { return $_[0] - $_[1]; }

sub dosth
{
    my ($func, $num0, $num1) = @_;
    # how to call code $func with arguments $num0 and $num1 and return the return value of $func
}

print dosth(add, 3, 2) . " " . dosth(subt, 3, 2); # desired output: 5 1

1 个答案:

答案 0 :(得分:5)

像这样:

sub add { return $_[0] + $_[1]; }
sub subt { return $_[0] - $_[1]; }

sub dosth {
    my ($func, $num0, $num1) = @_;
    return $func->($num0, $num1);
}

print dosth(\&add, 3, 2) . " " . dosth(\&subt, 3, 2); # 5 1

在线http://codepad.org/RX1auCRn

诀窍是将引用传递给子程序dosth,然后你可以用箭头间接调用。