There are a few exceptions, but they're extremely obscure. Put use strict in your program to disable symbolic references instead. If a string scalar is used as a reference, Perl treats the string as the name of a variable and returns the value of that variable. Okay, enough about the basics. Maybe this doesn't seem too scary to you.
Symbolic references are only able to access values in the runtime symbol table.
In fact, that's what symbolic references are. They're a mechanism for accessing the runtime symbol table. They're not intended as a general purpose reference mechanism. Use ordinary references for that. But I don't know what my user's going to give me beforehand.