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 sigil.[40] 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”. See Table 2-1.
Table 2-1. Accessing scalar values
| 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 that are useful in specialized situations that we won’t go into yet. Table 2-2 shows what they look like.
Table 2-2. Syntax for scalar terms
| 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 sigil @, which works
much like the words “these” or “those”. Table 2-3 shows this syntax.
Table 2-3. Syntax for list terms
| Construct | Meaning |
|---|---|
@days
| Array containing ($days[0], $days[1], ...
$days[ |
@days[3, 4, 5]
| Array slice containing
($days[3], $days[4],
$days[5]) |
@days[3..5]
| Array slice containing ... |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access