Si la sobrecarga fué especificada a través
de una referencia a subrutina se usa una llamada como subrutina mientras que si
se especificó como referencia simbólica se usa la sintáxis de método. Por ejemplo,
si $a y $b son dos objetos Math::BigFloat, para las
declaraciones
package Math::BigFloat;
use overload "*" => \&fmul,
"+" => "fadd",
"neg" => sub { Math::BigInt->new($_[0]->fneg()) };
tendríamos los siguientes ejemplos de traducciones:
$a*$b |
Math::BigFloat::fmul($a, $b, "") |
$a+$b |
$a->fadd($b, "") |
-$a |
(sub { Math::BigFloat->new($_[0]->fneg()) })->($a, undef, "") |
Casiano Rodríguez León
