MJD gives a great explanation of symbolic references and why they are bad at http://perl.plover.com/varvarname.html. Be sure to read all 3 parts of the article.

Update: I should summarize this topic. If $foo has the string "bar", then $$foo refers to $bar. The problem comes when you think that $foo has the string "bar" when it has some other string instead, causing potentially nasty side-effects. If you use strict.pm, it will disable this functionality (you can re-enable it locally with no strict 'refs';). In general you don't want to use symbolic references because it is almost as easy to use hashes instead, and they avoid the major potential pitfalls. (There are a small number of things that are very hard to do without symbolic references. Most programmers will never need to do them.)

Hard references are a entirely different kind of beast. Hard references are effectively pointers to the variable in question. So the line $foo = \$bar; means that $$foo is now $bar. There are things you can do with hard references that would be next to impossible otherwise (for instance references underlie Perl's OO system), and they are much, much safer. If you want an overview of the syntax of hard references, read references quick reference.


In reply to Re: Hard reference vs Soft/Symbolic reference by tilly
in thread Hard reference vs Soft/Symbolic reference by perlpal

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.