Из-за правил приоритета, perl не анализирует ваше утверждение, как вы думаете:
$ perl -MO=Deparse,-p -e '$set eq "Y" ? $set = "N" : $set = "Y"'
((($set eq 'Y') ? ($set = 'N') : $set) = 'Y');
-e syntax OK
Итак, как вы видите, в обоих условиях конечным результатом является скаляр $set
, который затем устанавливается вY
.
Вы можете исправить это несколькими скобками:
$set eq "Y" ? $set = "N" : ($set = "Y")
Но зачем повторять назначение:
$set = $set eq 'Y' ? 'N' : 'Y';