# 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 "+", "--", "<="';
