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
