in reply to Re: Why do I (sometimes) get a REF ref and not a SCALAR ref? (silly)
in thread Why do I (sometimes) get a REF ref and not a SCALAR ref?

The "ARRAY" references can be dereferenced via @{ $ref }.
The "HASH" references can be dereferenced via %{ $ref }.
The "REF" references can be dereferenced via ${ $ref }.

Silly or not, but a self-circular reference can be followed ad infinitum; you never arrive at plain "SCALAR" value.

Replies are listed 'Best First'.
Re^3: Why do I (sometimes) get a REF ref and not a SCALAR ref? (cycles)
by tye (Sage) on Jun 23, 2016 at 20:01 UTC

    Circularity has nothing to do with whether "REF" or "SCALAR" is returned. "SCALAR" references can be dereferenced via ${ $ref }, exactly like "REF" references, which argues for not making that distinction. Code that is going to traverse from $sv to $$sv is often also code that will traverse from checking ref $av to checking ref $av->[0] and from checking ref $hv to checking ref $hv->{$key} and so can cycle infinitely for any of those cases.

    - tye        

Re^3: Why do I (sometimes) get a REF ref and not a SCALAR ref?
by Anonymous Monk on Jun 23, 2016 at 20:03 UTC

    Uh, addendum. (Getting confused myself?) I should've said:

    Both "SCALAR" and "REF" can be dereferenced via ${ $ref }, but only the "SCALAR" can be used as a honest scalar via that deref.