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