in reply to Ambiguity of @{ shift }
A very idiomatic way of breaking ambiguity is to use the no-op unary +.
my @foo = @{+shift}; print +(split)[2]; $hash{+lc}++; # etcetera [download]