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

如何在Perl中将函数作为参数传递给另一个函数,然后调用它?,perl,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 $

我是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
像这样:

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
在线

诀窍是将对子例程的引用传递到
dosth
,然后可以使用箭头间接调用。

如下所示:

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
在线

诀窍是将对子例程的引用传递到
dosth
,然后可以使用箭头间接调用