in reply to Are these grouping parens or list creation parens?

Are these grouping parens or list creation parens?

There's no such thing as list-creating parens. Lists are created by commas and where they are needed. Parens override precedence, modify certain operators (e.g. = vs ()=, x vs ()x, eof vs eof(), etc), and indicate a lack of operands when empty.

I'd like to know if perl is able to avoid creating a one-element list

No.

$x = ("a","b","c");
compiles to
pushmark const "c" list $x sassign
and not
const "c" $x sassign

That case of a list in scalar or void context could be optimised (if it's known at compile-time), but the savings would be negligible since pushmark and list are extremely cheap operations O(1) operations.

Is this assignment: my $check = ($y eq $z); any less efficient than this? my $check = $y eq $z;

No. Their compilation produces identical outputs.

Replies are listed 'Best First'.
Re^2: Are these grouping parens or list creation parens?
by perl5ever (Pilgrim) on Oct 02, 2009 at 16:09 UTC
    There's no such thing as list-creating parens. Lists are created by commas and where they are needed. Parens override precedence, modify certain operators (e.g. = vs ()=, x vs ()x, eof vs eof(), etc), and indicate a lack of operands when empty.
    That's very enlightening - thanks!