|
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. Scalar references: $ra = \$a; # reference to scalar
$$ra = 2; # dereference scalar-ref
$ra = \1.6; # reference to constant scalar 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 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 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 Generalized 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
|