Citation :
 
 
 References
 
 1. Scalar references:
 $ra = \$a;   # reference to scalar
 $$ra = 2;    # dereference scalar-ref
 $ra = \1.6;  # reference to constant scalar
   2. Array references:
 $rl = \@l;           # reference to existing
 $rl = [1,2,3];      # reference to anon. scalar
 push (@$rl, "a" ); # Dereference
 print $rl->[3]      # 4th element of array pointed to by $rl
   3. Hash references: 
 $rh = \%h;                                                 # reference to hash
 $rh = {"laurel" => "hardy", "romeo" => "juliet"}; # ref to anon-hash
 print keys (%$rh);                                       # Dereference
 $x = $rh->{"laurel"};                                    # Arrow notation to extract single element
 @slice = @$rh{"laurel","romeo"};                    # Hash slice
 
 4. Code references:
 $rs = \&foo;                # reference to existing subroutine foo
 $rs = sub {print "foo"}; # reference to anonymous subroutine
                                 # (remember the semicolon at the end)
 &$rs();                       # dereference: call the subroutine
   5. Generalized dereferences. Any code inside a block yielding a reference can be dereferenced:
 @a = @{foo()}; # dereference the array reference
                        # returned by foo()
   6. References gotchas. All the examples below are wrong. Always use -w in developing and testing.
 @foo = [1,3,4]; # Assigning an array-ref to an array
                       # Use parentheses instead.
 %foo = {"foo" => "bar"}; # Assigning a hash-ref to a hash.
                                   # Use parentheses instead.
 $foo = \($a, @b); # Identical to $foo = (\$a, \@b)
                          # Assiging an enumerated list to a
                          # scalar yields the last element (so,
                          # $foo gets \@b). Use [ ] if you need
                          # an array reference
 
   |