La Subrutina overload::constant

Para cambiar el modo en que Perl interpreta las constantes enteras, flotantes, cadenas y expresiones regulares podemos crear un conjunto de ''manejadores'' mediante la subrutina overload::constant.

Se espera que dicho manejador devuelve un valor escalar que es usado en lugar de la interpretación normal. Por ejemplo, para usar overload::constant en el paquete Math::BigFloat para modificar el modo en que las constantes enteras y flotantes se interpretan en Perl haríamos:

package Math::BigFloat;
use Math::BigInt;
use overload;

my %_constant_handlers = (
  integer => sub { return Math::BigInt->new($_[0]) },
  float   => sub { return Math::BigFloat->new($_[0]) }
);

sub import { overload::constant %_constant_handlers }
sub unimport { overload::remove_constant %_constant_handlers }
Obsérve el uso de import (véase sección 5.7) que como sabemos es ejecutada cada vez que se usa (use Math::BigFloat) el módulo. Aquí la función de import no es exportar símbolos sino hacer que se ejecute la llamada overload::constant %_constant_handlers produciendo la consiguiente modificación de la interpretación de las constantes enteras y flotantes.

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