I was thinking of allocation to be handing over a chunk of raw memory and initialization to be things like setting ref count to 1, the pointer to the contents to NULL or however an empty list is represented and any other bookkeeping. It is possible that these two steps are a single opcode and can't be separated.
On stack unwind, in response to the directive, clear the @array if there are no more references to it. Otherwise, allocate a new @array.
Surely allocation of a new array would only be done on entry to the block at the start of each iteration?
Once more thanks for your time. If you would care to point me to documentation where I can read some more that would be helpful (and spare you more tedious questions;). I am looking for somewhere between perl internals and the source tarball. Even knowing where to start on the source would be useful.
Just spotted perl -lne 'print if /^[^\/]+\.[ch]\s+/' MANIFEST in perlhack, I guess that's where I start.