$ for scalar values (number, string or reference) @ for arrays % for hashes (associative arrays) * for all types of that symbol name. In version 4 you used them like pointers, but in modern perls you can just use references.
While there are a few places where you don't actually need these type specifiers, except for files, you should always use them.
A couple of others that you're likely to encounter that aren't really type specifiers are:
<> are used for inputting a record from a filehandle. \ takes a reference to something.
Note that <
FILE> is neither the type specifier for files nor the name of the handle. It is the <>
operator applied to the handle
FILE. It reads one line (well, record - see
$/) from the handle
FILE in scalar context, or all lines in list context. When performing open, close, or any other operation
besides <>
on files, or even talking about the handle, do
not use the brackets. These are correct: eof, seek and ``copying from
STDIN to
FILE''.