Variables
Not surprisingly, there are three variable types
corresponding to the three abstract data types we mentioned earlier.
Each of these is prefixed by what we call a funny
character.[5] Scalar variables are always named with an initial
$, even when referring to a scalar that is part of
an array or hash. It works a bit like the English word "the". Thus, we
have:
| Construct | Meaning |
|---|---|
$days | Simple scalar value $days |
$days[28] | 29th element of array @days |
$days{'Feb'} | "Feb" value from hash
%days |
Note that we can use the same name for $days,
@days, and %days without Perl
getting confused.
There are other, fancier scalar terms, useful in specialized situations that we won't go into yet. They look like this:
| Construct | Meaning |
|---|---|
${days} | Same as $days but unambiguous before
alphanumerics |
$Dog::days | Different $days variable, in the
Dog package |
$#days | Last index of array @days |
$days->[28] | 29th element of array pointed to by reference
$days |
$days[0][2] | Multidimensional array |
$days{2000}{'Feb'} | Multidimensional hash |
$days{2000,'Feb'} | Multidimensional hash emulation |
Entire arrays (or slices of arrays
and hashes) are named with the funny character @,
which works much like the words "these" or "those":
| Construct | Meaning |
|---|---|
@days | Array containing ($days[0], $days[1],…
$days[n]) |
@days[3, 4, 5] | Array slice containing ($days[3], $days[4],
$days[5]) |
@days[3..5] | Array slice containing ($days[3], $days[4],
$days[5]) |
@days{'Jan','Feb'} | Hash slice containing
($days{'Jan'},$days{'Feb'}) |
Entire hashes are named by %:
| Construct | Meaning |
|---|