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 "!"
|