in reply to
Re: Update references
in thread Update references
The reference refers to the scalar retrieved via $a[0], not the array index [0]. The reference knows nothing about the array that scalar came from. And the scalar will exist as long as its refcount is > 0.
$ perl -MDevel::Peek -E'@a=qw(a b c); $r=\$a[0]; Dump $r; @a=(); Dump
+$r'
SV = IV(0xa95bc0) at 0xa95bd0
REFCNT = 1
FLAGS = (ROK)
RV = 0xa77998
SV = PV(0xa75c20) at 0xa77998
REFCNT = 2 <---
FLAGS = (POK,pPOK)
PV = 0xa8ee40 "a"\0
CUR = 1
LEN = 16
SV = IV(0xa95bc0) at 0xa95bd0
REFCNT = 1
FLAGS = (ROK)
RV = 0xa77998
SV = PV(0xa75c20) at 0xa77998
REFCNT = 1 <---
FLAGS = (POK,pPOK)
PV = 0xa8ee40 "a"\0
CUR = 1
LEN = 16
(note the refcounts)