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

The question is: "Is it a simple scalar, or is it an object?". Giving the output ikegami asked for could help a lot in resolving the problem.

Simple scalars behave as you expect. Objects can do whatever they like. Showing us sample that we can run and reproduce the issue would help - we could then try ikegami's test. That doesn't at all mean we want to see your application though, but just enough lines to reproduce the issue. See I know what I mean. Why don't you? for some tips that help in this situation.


Perl's payment curve coincides with its learning curve.

Replies are listed 'Best First'.
Re^4: Getting different results with $var++ and $var += 1
by splicer (Novice) on Dec 03, 2008 at 22:05 UTC

    I just got back to my desk for the first time since I posted last night. I'll get to work creating the test version of the object.

    Despite the shortcomings of my description of the issue I'm encountering, you did answer with valuable information. I hadn't considered that I might be storing an object in any of those variables. 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.

    Anyhow, thank you and I'll get back with results as soon as I have them.

      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

        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!