¿Quién llamó a esta rutina?

La función intrínseca caller devuelve una lista de valores indicando:
  1. El paquete o package desde el cuál fue llamada la subrutina
  2. El nombre del fichero conteniendo el código desde el que fue llamada
  3. 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
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