¿Quién llamó a esta rutina?
La función intrínseca caller
devuelve una lista de valores indicando:
- El paquete o package desde el cuál fue llamada la subrutina
- El nombre del fichero conteniendo el código desde el que fue llamada
- La línea en el fichero desde el cual fué llamada
Así la típica llamada es:
($package, $filename, $line) = caller;
Cuando caller
se llama en un contexto escalar sólo devuelve
el nombre del paquete.
Se le puede pasar un argumento (caller expr) en cuyo caso
expr indica el número de contextos de pila que se retroceden a partir de
este. En ese caso la información devuelta es aún mas rica:
($package, $filename, $line, $subr, $has_args, $wantarray) = caller($i);
Por ejemplo, el siguiente código nos da el nombre de la función
actual:
$this_function = (caller(0))[3];
Casiano Rodríguez León

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