+ is the unary-+ operator. It does absolutely nothing but evaluate to the same thing its operand does. It even provides the same context as the one in which it's evaluated.
+5 # Same as `5`
+"abc" # Same as `"abc"`
+@a # Same as `@a`, in both scalar and list context
${ shift } is just a weird undocumented way of writing $shift. I didn't want that. I wanted to use the shift operator. ${ +shift } can't be parsed as a scalar named +shift, so it has the desired effect.
|