### Re: Does Scope of Referenced Array Matter?

by repellent (Priest)
 on Feb 20, 2012 at 22:22 UTC ( #955170=note: print w/replies, xml ) Need Help??

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

Create A New User
Node Status?
node history
Node Type: note [id://955170]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2018-03-18 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When I think of a mole I think of:

Results (230 votes). Check out past polls.

Notices?