O'Reilly logo

Advanced Perl Programming by Sriram Srinivasan

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Appendix B. Syntax Summary

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.

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 anonymous array
    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); ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required