in reply to push undefined and vivification

why perl vivify an anonymous array in @a?

Because that's how perl works (what did you expect it to do?).