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
 
