next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Máximo Sup: Subrutinas Ant: Contexto de la llamada Err: Si hallas una errata ...


¿Quién llamó a esta rutina?

Existe un módulo Carp que nos permite localizar quién llamo a la rutina actual. La función intrínseca caller devuelve una lista de valores indicando:
  1. El ``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];


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Máximo Sup: Subrutinas Ant: Contexto de la llamada Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21