# In the SomeThing module:

package SomeThing;



use overload

    '+' => \&myadd,

    '-' => \&mysub;



# In your other code:

use SomeThing;



$a = SomeThing->new(57);

$b=5+$a;



if (overload::Overloaded $b) {...}  # is $b subject to overloading?



$strval = overload::StrVal $b;

*****

package Number;

use overload

    "+"  => \&add,

    "*=" => "muas";

*****

+    -    *    /    %    **    <<    >>    x    .

+=   -=   *=   /=   %=   **=   <<=   >>=   x=   .=

*****

<   <=  >   >=  ==  !=  <=>

lt  le  gt  ge  eq  ne  cmp

*****

&   ^   |   neg   !   ~

*****

++   --

*****

atan2   cos   sin   exp   abs   log   sqrt

*****

bool   ""   0+

*****

nomethod  fallback  =

*****

&nomethodMethod($a, 1, 1, "-")

*****

$a=$b;

$a++;

*****

$a=$b;

$a=$a+1;

*****

$a=$b;

# Something else which does not modify $a or $b...

++$a;

*****

$a=$b;

# Something else which does not modify $a or $b...

$a = $a->clone(undef, "");

$a->incr(undef, "");

*****

<,  >,  <=, >=, ==, !=    \fRin terms of <=>

lt, gt, le, ge, eq, ne    \fRin terms of cmp

*****

eval 'use overload "+" => \&addmethod';

*****

eval 'no overload "+", "--", "<="';

