Contents:
References
Nested Data Structures
Closures
Modules
Objects
Dynamic Behavior
Exception Handling
Meta-Information
Typeglobs
Filehandles, Formats
Thus spake the Master Ninjei:"To the intelligent man, one word, to the fleet horse, one flick of the whip, to the well-written program, a single command."
- The Zen of Programming
This appendix provides a distillation of all syntax used in this book.
$ra = \$a; # reference to scalar $$ra = 2; # dereference scalar-ref $ra = \1.6; # reference to constant scalar
$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
$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$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 subroutineGeneralized dereferences. Any code inside a block yielding a reference can be dereferenced:
@a = @{foo()};           # dereference the array reference 
                         # returned by foo()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