2016-04-01 43 views
0

私はPerlを初めて使っています。 2つのパラメータを別の関数に渡し、2つ目の関数の中から1つ目の関数を呼び出す汎用関数を送信するだけです。私はそれがどうやってできるのかよく分かりません。ここに私が書こうとしているコードがあります。このよう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 

答えて

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にサブルーチンへ参照を渡すことです。

関連する問題