Syntax Summary

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 Developing

This appendix provides a distillation of all syntax used in this tutorial.

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