in reply to Re^4: Different behaviour of 'stat' function after assignment to $! (errno).
in thread Different behaviour of 'stat' function after assignment to $! (errno).

It does modify $!, but its only reflected when you Peek if you put $! in int/boolean/string context first, because Peek won't force the conversion. The assignment modified the IV slot, but stat modified the NV/PV slot.
$ perl -MDevel::Peek -E " stat 1; Dump($!); $!=666; stat 1; $! and Dum +p($!); " SV = PVMG(0x9b3bfc) at 0x9ba5ec REFCNT = 1 FLAGS = (GMG,SMG) IV = 0 NV = 0 PV = 0 MAGIC = 0x9d904c MG_VIRTUAL = &PL_vtbl_sv MG_TYPE = PERL_MAGIC_sv(\0) MG_OBJ = 0x9ba61c MG_LEN = 1 MG_PTR = 0x9da014 "!" SV = PVMG(0x9b3bfc) at 0x9ba5ec REFCNT = 2 FLAGS = (GMG,SMG,pNOK,pPOK) IV = 666 NV = 2 PV = 0x3ffee4 "No such file or directory"\0 CUR = 25 LEN = 28 MAGIC = 0x9d904c MG_VIRTUAL = &PL_vtbl_sv MG_TYPE = PERL_MAGIC_sv(\0) MG_OBJ = 0x9ba61c MG_LEN = 1 MG_PTR = 0x9da014 "!"
  • Comment on Re^5: Different behaviour of 'stat' function after assignment to $! (errno).
  • Download Code