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.
compiles to$x = ("a","b","c");
and notpushmark const "c" list $x sassign
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.
In reply to Re: Are these grouping parens or list creation parens?
by ikegami
in thread Are these grouping parens or list creation parens?
by perl5ever
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |