$var
A simple scalar variable.
$p = $var
Now $p
is a reference to scalar $var.
$$p
The scalar referenced by $p.
@var
An array. In scalar context, the number of elements in the array.
$var[6]
Seventh element of array @var.
$var[-1]
The last element of array @var.
$p = @var
Now $p
is a reference to array @var.
$$p[6]
or $p->[6]
Seventh element of array referenced by $p.
${$p[6]}
The scalar referenced by $p[6].
$p = $var[6]
Now $p
is a reference to the seventh element of array @var.
$p = [1,3,'ape']
Now $p
is a reference to an anonymous array with three elements.
$var[$i][$j]
$j
-th element of $i
-th element of array @var.
$#var
Last index of array @var
.
@var[3,4,5]
A slice of array @var.
%var
A hash. In scalar context, true if the hash has elements.
$var{'red'}
or $var{red}
A value from hash %var.
The hash key may be specified without quotes if it is simple identifier.
$p = \%var
Now $p
is a reference to hash %var.
$$p{'red'}
or $p->{'red'}
A value from the hash referenced by $p.
${$p{'red'}}
The scalar referenced by $p{'red'}.
$p = {red => 1, blue => 2, yellow => 3}
Now $p
is a reference to an anonymous hash with three elements.
@var{'a','b'}
A slice of %var
; same as ($var{'a'},$var{'b'})
.
$var{'a'}[1]
Multidimensional hash.
$var{'a',1, ... }
Emulated multidimensional hash (obsolete).
$c = &mysub
Now $c
is a reference to subroutine mysub.
$c = sub {
. . . }
Now $c
is a reference to an anonymous subroutine.
&$c(
args )
or $c->(
args )
A call to the subroutine via the reference.
$MyPackage::var
Variable $var
from package MyPackage.
Likewise @MyPackage::ary,
and so on.
Variables that are not part of a package belong to the default package main.
$::var
The same as $main::var
.
%MyPackage::
The package symbol table.
*var
Symbol table entry (typeglob). Refers to everything represented by var: $var, @var, %var,
and so on.
*x = $y
Makes $x
an alias for $y.
*x = *y
Makes all x
aliases for y
. Also: *x = "y"
.
*var{SCALAR}
or *{$::{var}}{SCALAR}
The same as $var.
Likewise, *var{ARRAY}
is the same as @var.
Also HASH, CODE, FORMAT, GLOB,
and IO
.
Note that $var, @var, %var,
subroutine var,
format var,
and filehandle var
all share the identifier var,
but they are distinct variables.
Instead of the variable identifier, a block (see page 14) that returns the right type of reference can be used. For example, ${ $x > 0 ? $y[4] : $z }
.