http://qs1969.pair.com?node_id=1086121


in reply to conditional statement works one way, but not the other (Updated)

G'day igoryonya,

"but this gives a syntax error"

When you get errors, please post them.

"I checked and rechecked, didn't find any parentacy or semicolon missing or extra."

I'm fairly certain that whatever error you got said nothing about parentheses or semicolons. The error was probably more like these:

$ perl -Mstrict -Mwarnings -le '1 == 0 ? 1 : (for (1) { 1 })' syntax error at -e line 1, near "(for " Execution of -e aborted due to compilation errors.
$ perl -Mstrict -Mwarnings -le '1 == 0 ? 1 : (while (1) { 1 })' syntax error at -e line 1, near "(while" Execution of -e aborted due to compilation errors.

I suspect you may be confusing conditional statements (e.g. using if) with the Conditional Operator which takes operands, not Compound Statements.

Writing code the way you have is highly error-prone. It's very difficult to read and a maintenance nightmare. Please read the "Perl Style Guide" — you may also find perltidy useful.

-- Ken