in reply to Re^4: Getting different results with $var++ and $var += 1
in thread Getting different results with $var++ and $var += 1

I've been under the impression that an object is just a reference, and I thought that printing a reference would have given me something like "HASH0xbf43" rather than the value I was expecting

That won't be the case if double quotes have been overloaded for that (blessed) object.
perl -MMath::BigInt -le 'print Math::BigInt->new(123)'
For example, it's that overloading that causes the above one liner to output 123 instead of Math::BigInt=HASH(0x210fe54)

Otoh, Devel::Peek::Dump(), in addition to providing more detail, is also a *reliable* way of seeing what the scalar actually is.

Cheers,
Rob

Replies are listed 'Best First'.
Re^6: Getting different results with $var++ and $var += 1
by splicer (Novice) on Dec 04, 2008 at 00:23 UTC

    Aha! that's it! I'm using Math::BigInt in this package. Serves me right for using a module without knowing how it works internally.

    I moved "use Math::BigInt ':constant';" from the beginning of the package into the (one and only) subroutine in which it is needed. Now my numbers are numbers in the code in question.

    I suspect it would be even smarter to drop the ':constant' and explicitly create BigInts in those few places I need them.

    BTW, Devel::Peek::Dump() isn't showing me anything here. Nothing at all. Blank. That's not what's supposed to happen, but I think that's an entirely different mystery to solve tomorrow, not today. It works elsewhere on this machine, so I'm sure it's working, just somehow being prevented from showing me the results.

    Thank you!

      I'm using Math::BigInt in this package

      Which makes it a little easier to demonstrate how some of those NaN values might arise:
      C:\>perl -MMath::BigInt -le "$x=Math::BigInt->new(123);$x += 'str';pri +nt $x" NaN
      Cheers,
      Rob