References are scalar data consisting of the memory address of a piece of Perl data, and can be used in arrays, hashes, etc wherever you would use a normal scalar
References can be used to create complex data structures, to pass multiple arrays or hashes to subroutines, and in object-oriented Perl.
References are created by prepending a backslash to a variable name.
References are dereferenced by replacing the name part of a variable name (eg foo in $foo) with a reference, for example replace foo with $foo_ref to get $$foo_ref
References to arrays and hashes can also be dereferenced using the arrow -> notation.
References can be passed to subroutines as if they were scalars.
References can be included in arrays or hashes as if they were scalars.
Anonymous arrays can be made by using square brackets instead of round; anonymous hashes can be made by using curly brackets instead of round. These can be assigned directly to a reference, without any intermediate step.