[Appendix B] Syntax Summary
Author: Sriram Srinivasan
Date: 1999-07-02T01:43:15Z

#

| Appendix B |

# B. 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 Programming

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

## B.1 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

A.8 HList - Hierarchical List |  | B.2 Nested Data Structures