No, I don't have that problem. It is superfluous. For some reason I was in the mindset that the example of how to assign to more than one variable might be useful to the OP, but I should've done that with @array1 through @array4 if I wanted to make that point I guess.
Re^3: Array name with a Variable
Replies are listed 'Best First'.
Well, I think more specifically why the assignment and the declaration ended up inside the loop together that way was that I followed basically these steps:
copied the original code with the declaration at the top
modified the code to clear the hashes inside the loop to reuse them
noticed the hashes weren't actually used outside the loop
moved the "my" inside the loop with the assignment
stopped, not paying any attention to the fact that I now had a useless assignment.
So you can see it was at some point useful, but I actually added smell to that portion of the code by refactoring carelessly. That's something to consider when thinking about changing working code, I guess.
Update: I guess the above should say I put the code to clear the hashes inside the wrong loop the first time around. See Re^3: Array name with a Variable for a corrected version (or see the responses by those who didn't screw up the scoping in the first place). ;-)