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


in reply to Does Scope of Referenced Array Matter?

It may be interesting to note how reference count grows. Here's an example of reference counts to the scalar $a, with explanation in comments:
use Devel::Peek qw(SvREFCNT); my $a = 9; # 1 = $a is an SV of an IV with refcnt of + 1 warn SvREFCNT($a), "\n"; my $b = \$a; # 2 = (anonymous) scalar ref maintained b +y $b warn SvREFCNT($a), "\n"; my $d = my $c = $b; # 4 = two more ref copies made warn SvREFCNT($a), "\n"; my $f = my $e = \$b; # 4 = $a unaffected by references _to_ $b warn SvREFCNT($a), "\n"; my $g = [ $a ]; # 4 = copy of value $a in array warn SvREFCNT($a), "\n"; my $h = [ $c ]; # 5 = copy of ref to $a in array warn SvREFCNT($a), "\n"; my $i = sub { $b, $c, $e }; # 5 = $a unaffected by closure over _refs +_ to $a warn SvREFCNT($a), "\n"; my $j = sub { $a, $a, $a }; # 6 = closure over actual lexical $a warn SvREFCNT($a), "\n"; undef $_ for $b, $c, $d, $h, $j; # 1 = kill all refcnt contributors ( +except for $a itelf) warn SvREFCNT($a), "\n";