in reply to Re^2: ref == "REF"
in thread ref == "REF"
Since print $$reference (when ref $reference is SCALAR) will always output a value. When ref $reference is REF it will output SCALAR(0xXXXXXX).
The particular code I had in mind is:
$a = "xyz"; $b = \$a; $c = \$b; $d = $c; while (ref $d eq "REF") { $d = $$d; } $, = " & "; print ($a, $b, $c, $d, $dd);
If you look at the output then $d will have the same value of $d
What is different if there was no REF type, and you would need to have a reference (for whatever purpose) at the end of the while, then you will need to create a new reference which will not refer to the same scalar as $b:
$a = "xyz"; $b = \$a; $c = \$b; $d = $c; while (ref $d eq "SCALAR" or ref $d eq "REF") { $d = $$d; } $, = " & "; $e = \$d; print ($a, $b, $c, $d, $dd, $e);
$dd is ofcourse undefined, and $e refers to the scalar $d, not to $b. Which means you went one step to far in the iteration.
I don't know wheter this is useful or useless since I haven't really needed it yet, but if I need it I sure will be happy to have it. Else that second loop would need some extra code...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: ref == "REF"
by gaal (Parson) on Oct 18, 2004 at 20:39 UTC | |
by Anonymous Monk on Oct 18, 2004 at 21:15 UTC | |
by Anonymous Monk on Oct 18, 2004 at 21:00 UTC | |
by gaal (Parson) on Oct 18, 2004 at 21:13 UTC |