Not true,
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...
|