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.
#!/usr/local/bin/perl5.8.0 -w use strict; use Set::Scalar; sub f { my $x = shift; 2*$x; } sub g { my $x = shift; $x*$x; } sub sum { my $rf1 = shift; my $rf2 = shift; return (sub { my $x = shift; &$rf1($x)+&$rf2($x); }); } my $rf = \&f; my $rg = \&g; my $s = sum($rf, $rg); print "Dame un número: "; my $x; chomp($x = <>); print "f($x)+g($x) = ",&$s($x),"\n"; print "Dame una subrutina anónima "; my $r; chomp($r = <>); $r = eval($r); my $t = sum($r, $s); 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