Scalar and List Contexts
Every operation that you invoke in a Perl script is
evaluated in a specific context, and how that operation behaves may
depend on the context it is being called in. There are two major
contexts: scalar and list.
All operators know which context they are in, and some return lists
in contexts wanting a list and scalars in contexts wanting a scalar.
For example, the localtime
function returns a nine-element list in list context:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime( );
But in a scalar context, localtime
returns the number of seconds
since January 1, 1970:
$now = localtime( );
Statements that look confusing are easy to evaluate by identifying the proper context. For example, assigning what is commonly a list literal to a scalar variable:
$a = (2, 4, 6, 8);
gives $a
the value 8. The
context forces the right side to evaluate to a scalar, and the
action of the comma operator in the expression (in the scalar
context) returns the value farthest to the right.
Another type of statement that might be confusing is the evaluation of an array or hash variable as a scalar. For example:
$b = @c;
When an array variable is evaluated as a scalar, the number of
elements in the array is returned. This type of evaluation is useful
for finding the number of elements in an array. The special $#
array
form
of an array value returns the index of the last member of the list
(one less than the number of elements).
If necessary, you can force a scalar context in ...
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.