El siguiente ejemplo muestra una función sum
que
recibe como parámetros de entrada dos referencias a funciones
de una variable y devuelve una referencia a la función suma
de aquellas.
lhp@nereida:~/Lperl/src$ cat -n readfunction.pl 1 #!/usr/local/bin/perl5.8.0 -w 2 use strict; 3 4 sub f { 5 my $x = shift; 6 2*$x; 7 } 8 9 sub g { 10 my $x = shift; 11 $x*$x; 12 } 13 14 sub sum { 15 my $rf1 = shift; 16 my $rf2 = shift; 17 18 return (sub { my $x = shift; &$rf1($x)+&$rf2($x); }); 19 } 20 21 my $rf = \&f; 22 my $rg = \&g; 23 24 my $s = sum($rf, $rg); 25 26 27 print "Dame un número: "; 28 my $x; 29 chomp($x = <>); 30 print "f($x)+g($x) = ",&$s($x),"\n"; 31 32 print "Dame una subrutina anónima "; 33 my $r; 34 chomp($r = <>); 35 $r = eval($r); 36 my $t = sum($r, $s); 37 print "Tu función($x)+f($x)+g($x) = ",&$t($x),"\n";
Sigue un ejemplo de ejecución:
$ ./readfunction.pl Dame un número: 4 f(4)+g(4) = 24 Dame una subrutina anónima sub { my $x = shift; $x -1; } Tu función(4)+f(4)+g(4) = 27