in reply to How to eliminate warning message on hash value?

I would just add that I find this $$ref confusing when used with a subscript, I prefer the arrow notation: $db->{CurentKey} over $$db{CurrentKey}. I just think that it is more clear.
  • Comment on Re: How to eliminate warning message on hash value?

Replies are listed 'Best First'.
Re^2: How to eliminate warning message on hash value?
by FloydATC (Deacon) on Dec 08, 2011 at 12:13 UTC
    Funny, I was thinking the same.

    $$keyptr = $$db{CurrentKey};
    What exactly does this statement do? Mentally, I'm converting it to
    $keyptr-> = $db->{CurrentKey};
    which doesn't make any sense to me. What am I missing?

    -- Time flies when you don't know what you're doing
      Well $$keyptr dereferences presumably a pointer to the $key. This is fine if say X(\$key); sub X{$keyptr = shift} got called. Then $$keyptr = 3; would set $key to be 3 (just for example).

      As far as $$db{CurrentKey}, I figure that $db->{CurrentKey} is better although the other syntax is allowed.

      As to why the OP did this, I'm not quite sure. Passing a reference to a scalar is usually not necessary because Perl can return multiple values in a list. Normally if I modify your input scalar, I return it back as a modified value in a list. That is different than passing me a reference to an array where that might be some huge thing.