in reply to Ternary operator can't be used as first argument of push

With regard to the modification of passed arrays, the @_ array isn't aliased to anything (well, really it is aliased to the operand stack) but each individual element is aliased to each individual parameter. So this works:
perl -we'upd(@x[0..2]); sub upd { @_[0..2] = "a".."c" } print @x' abc
but removing either slice fails. Note that array or hash elements that you pass need not actually exist to be aliased successfully.

Just recently someone reported that constant folding is allowing something like this push((CONST ? @x : @y), "foo") to work. IMO, this is a bug and should not be relied upon.