The code you posted should probably work, provided that use strict 'refs' is not in effect.
in reply to How to correctly use a symbolic reference to automatically generate hash names?
This is because you're trying to use symbolic references (Perl's term for "a variable that contains the name of another variable") and using symbolic references is one of the things that strict is specifically intended to prohibit.
This is because symbolic references are a bad idea in any circumstance where you might need to someday debug or maintain the code.
Any time that you find yourself making a series of variables named var1, var2, var3, etc., that's a pretty sure sign that you really want an array rather than a list of variables with similar names. This applies just as much to hashes and arrays as it does to scalars.