http://www.perlmonks.org?node_id=681297


in reply to Re^3: Array name with a Variable
in thread Array name with a Variable

A fair point. It was a strange construct I've never seen before, and I wondered at the motivation.

Replies are listed 'Best First'.
Re^5: Array name with a Variable
by mr_mischief (Monsignor) on Apr 17, 2008 at 20:59 UTC
    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:

    1. copied the original code with the declaration at the top
    2. modified the code to clear the hashes inside the loop to reuse them
    3. noticed the hashes weren't actually used outside the loop
    4. moved the "my" inside the loop with the assignment
    5. 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). ;-)