Constants created by use constant are actually functions, or at least act like them.
The parens aren't needed in the code you gave, but they don't harm anything either.
>perl -MO=Concise -e"use constant BUFFER => 20; if (BUFFER() != 20) {} +" 3 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 72 -e:1) v ->3 - <0> ex-const v/4 ->3 -e syntax OK >perl -MO=Concise -e"use constant BUFFER => 20; if (BUFFER != 20) {}" 3 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 72 -e:1) v ->3 - <0> ex-const v/4 ->3 -e syntax OK
They do help in other circumstances, though. If a bareword is expected, then the constant will be treated as a bareword instead of as a constant. EXPR => might be the only problem.
>perl -le"use constant FOO => 'abc'; print %{{ FOO => 'def' }};" FOOdef >perl -le"use constant FOO => 'abc'; print %{{ FOO() => 'def' }};" abcdef
Update: Interestingly, neither $hash{EXPR} and sub(*)->{EXPR} treat the constant as a bareword. EXPR => might be the only case where it's an issue.
In reply to Re: use constant with parentheses
by ikegami
in thread use constant with parentheses
by perlfan99
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |