Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^3: how ! operator works

by arkturuz (Curate)
on Feb 04, 2011 at 09:12 UTC ( #886159=note: print w/ replies, xml ) Need Help??


in reply to Re^2: how ! operator works
in thread how ! operator works

That refcount (2147483647) looks strangely familiar. Is that a coincidence or just a hack in the interpreter so it (the object in question) never gets destroyed by the garbage collector (theoretically)?


Comment on Re^3: how ! operator works
Re^4: how ! operator works
by moritz (Cardinal) on Feb 04, 2011 at 09:44 UTC
Re^4: how ! operator works
by bart (Canon) on Feb 04, 2011 at 14:20 UTC
    That refcount (2147483647) looks strangely familiar.
    Just print it out in hex and you'll see:
    7FFFFFFF
    which is a clear indication that this is the largest positive integer you can stuff into a signed 32 bit integer (2's complement).

    So yeah, your guess is very likely correct.

Re^4: how ! operator works
by ikegami (Pope) on Feb 04, 2011 at 20:48 UTC

    So I looked at the code to answer your question. It looks like it's a hack, not a magical value. The refcount can go down, but it gets reset back to the max for SvIMMORTAL variables (the true, the false, the undef and a special internal thing called "placeholder").

      So I looked at the code to answer your question.

      Thanks! I searched the code myself today with no luck. I postoponed it for the weekend but now you have resolved this, I'll just have to stick to something else to do :)
        My answer is more or less an educated guess. If you want to look around to confirm or for fun, PL_sv_no is the SV returned when a builtin wants to return something false. An interesting puzzle would be to see if you can manage to lower the refcount and display it at the lower refcount using Devel::Peek's Dump.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://886159]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (12)
As of 2014-12-18 19:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (61 votes), past polls