The stupid question is the question not asked  
PerlMonks 
comment on 
( #3333=superdoc: print w/replies, xml )  Need Help?? 
The + overload constructs a new object. Perl uses that overload, and then overwrites the stored value. This means every += op creates a new object
Thanks for the explanation  helps me understand what's going on, and also helps me understand the overload documentation. Not that it needed to be checked, but with the help of Devel::Peek::Dump() I was able to verify that, with Math::GMP, the address of the object does indeed change with every += And I was also able to verify that the same is not true of Math::GMPz. I find this overloading of '=' to be a bit of a headache, in that it provides a lot more rope than I would like. WRT Math::GMP, if you have a Math::GMP object ($x) to which you wish to add, say, 4 then there's 2 ways you can do that: They both do the same thing in that they increase the value held in $x by 4. But they don't do the same thing if they were preceded by $x = $orig; where $orig is a Math::GMP object: VERSUS: AFAIK, the same sort of trap occurs in every math module that overloads '=', including my own Math modules, along with Math::BigInt and Math::BigFloat. (This is not limited to Math::GMP, and I'm not singling it out.) Although it doesn't really fit with the title I've given this thread, a second question is "Should the documentation of the module (eg Math::GMP) draw attention to this trap ?". Or is it acceptable to say nothing and put the onus of dodging the trap upon the user ? BTW, this all started with this Math::MPFR bug report, which is about this same trap in a different module. I keep changing my mind about what, if anything, should be done .... Cheers, Rob In reply to Re^2: How does Math::GMP overload the assignment operator ?
by syphilis

