Referencias a subrutinas anónimas

Vimos antes que es posible mediante una referencia apuntar a una función ya existente:
1 sub tutu {
2   print "En tutu\n";
3 }
4 
5 $refsub = \&tutu;

Note que en la lınea 5 no se esta llamando a la función &tutu de la misma forma que cuando tomamos una referencia a una variable escalar no evaluamos el escalar. La cosa cambia totalmente si la asignación de la lınea 5 se cambia por $refsub = \&tutu(). ¿Qué ocurre en este caso?

Para crear una referencia a una subrutina anónima, simplemente, omitimos el nombre de la subrutina. He aqui un ejemplo de referencia a subrutina anónima:

$sub_ref = sub { print "Hola $_[0]!\n" };
y un ejemplo de llamada:

$sub_ref->("Ana");

o bien:

&$sub_ref("Ana");

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19