Perl5 リファレンス

       scalar EXPR
               Forces EXPR to be interpreted in scalar context
               and returns the value of EXPR.

                   @counts = ( scalar @a, scalar @b, scalar @c );

               There is no equivalent operator to force an
               expression to be interpolated in list context
               because in practice, this is never needed.  If you
               really wanted to do so, however, you could use the
               construction `@{[ (some expression) ]}', but
               usually a simple `(some expression)' suffices.

               Because `scalar' is unary operator, if you
               accidentally use for EXPR a parenthesized list,
               this behaves as a scalar comma expression,
               evaluating all but the last element in void
               context and returning the final element 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:


               See the perlop manpage for more details on unary
               operators and the comma operator.