in reply to Ternary Operator: Condition-Negation

Have I - again - been caught by some precedence issue?

Yup. The ternary conditional operator (?:) has a higher precendence than assignment (=).   A ? B : C = 1 is treated as  (A ? B : C) = 1 In your case, C is a splice, which you can't modify. Try   split(@history,$i--,1) = 1 and you'll get the same error.