¿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