in reply to Can someone clarify what's happening here

The braces around the prefixes can be done away in this case, so @{array} is the same as @array, ${val} is the same as $val. And this is why @{shift} is made to be an array whose name can also be written as @shift and of course array is not related to the function shift().


Excellence is an Endeavor of Persistence. A Year-Old Monk :D .