in reply to Hard reference vs Soft/Symbolic reference
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.
|
|---|