start page | rating of books | rating of authors | reviews | copyrights

Advanced Perl Programming

Advanced Perl ProgrammingSearch this book
Previous: A.8 HList - Hierarchical List Appendix B Next: B.2 Nested Data Structures

B. Syntax Summary

Nested Data Structures
Dynamic Behavior
Exception Handling
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

Previous: A.8 HList - Hierarchical List Advanced Perl Programming Next: B.2 Nested Data Structures
A.8 HList - Hierarchical List Book Index B.2 Nested Data Structures