in reply to Ambiguity of @{ shift }

The interpreter warned you because you turned warnings on. Compare to
perl -we'sub foo{66}; die @{ foo }'
which warns Ambiguous use of @{foo} resolved to @foo at -e line 1.

Compare once again to

perl -we'die shift =>1' 1 perl -we'die shift() =>1' 1