in reply to What is the + in +shift doing here?
It is just a way of disambiguating the shift (or any other function name for that matter) in a location where it might be mistaken for another bareword lexical item. You will often find this (most commonly IMO) in print statements such as:
where the join would be misparsed as being a filehandle rather than a function.print +join '', @array;
The reason that the unary + is used is that it is syntactically valid (for reasons of symmetry I guess) but is a no-op.
/J\
|
|---|