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