>>995
ちょっとperldocからshiftの部分が関数呼び出しとみなされないと
書いてあるところを一緒に示せなくて申し訳ないけれど…

ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
のSymbolic Unary Operators
> 単項演算子の "+" は、たとえ文字列に対して用いられた場合にも、何もしません。
> 関数名に続けて括弧付きの式を書く場合に、関数の引数リストと解釈されないようにするために用いることができます。

この場合は@{shift}と書くと@shiftだと解釈されるからそれを防ぐためにつけているわけ。
@{shift()}と書いても動くよ