Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
They are type specifiers, as detailed in the perldata manpage:
$ 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, 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.
<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
<> on files, or even talking about the handle, do
not use the brackets. These are correct: eof(FH), seek(FH, 0,
2) and ``copying from