The subroutine for the assignment variant of an operator is
required only to return the result of the operation. It is
permitted to change the value of its operand (this is safe because
Perl calls the copy constructor first), but this is optional since
Perl assigns the returned value to the left-hand operand anyway.
####
'+=' => sub { $_[0] -> badd($_[1]); },
####
'+=' => sub { $_[0] -> badd($_[1]); 42 },
####
D:\>perl -MDevel::Peek -MMath::BigFloat -le "$x = Math::BigFloat->new(20); $x += 100; print $x; Dump $x;"
42
SV = PVIV(0x1bc99137430) at 0x1bc9913a450
REFCNT = 1
FLAGS = (IOK,pIOK,pPOK)
IV = 42
PV = 0x1bc9b44fbe0 "42"\0
CUR = 2
LEN = 16