scalar EXPR
Forces EXPR to be interpreted in scalar context and returns the valueof EXPR.
- @counts = ( scalar @a, scalar @b, scalar @c );
There is no equivalent operator to force an expression tobe interpolated in list context because in practice, this is neverneeded. If you really wanted to do so, however, you could usethe construction @{[ (some expression) ]}
, but usually a simple(some expression)
suffices.
Because scalar
is a unary operator, if you accidentally use aparenthesized list for the EXPR, this behaves as a scalar comma expression,evaluating all but the last element in void context and returning the finalelement evaluated in scalar context. This is seldom what you want.
The following single statement:
- print uc(scalar(&foo,$bar)),$baz;
is the moral equivalent of these two:
- &foo;
- print(uc($bar),$baz);
See perlop for more details on unary operators and the comma operator.