http://qs1969.pair.com?node_id=505824


in reply to How to kill perl?

unpack "P", ~0

Why doesn't unpack "P", 0 dump? I expected it to and this confused me.

Replies are listed 'Best First'.
Re^2: How to kill perl?
by robin (Chaplain) on Nov 04, 2005 at 18:35 UTC
    Why doesn't unpack "P", 0 dump? I expected it to and this confused me.

    The reason (on some level) is that pp_unpack() calls newSVpvn(), which calls sv_setpvn(), which has this code:

    if (!ptr) { (void)SvOK_off(sv); return; }
    In other words, unpack("P", 0) just returns an undefined SV. Since C code often uses null pointers in the same way that Perl code uses undef, I think this is more useful than crashing. :-)