you're replacing the convenience of arrays with symbolic references (see perlref for more). Symbolic references can be good things, but probably not here. They detract from readability of code, and don't make sense to people who've had only passing exposure to perl. compare $foo[$x] with ${"foo$x"}. which one is easier to parse?
Psychic::Clairvoyance tells me you're not using CGI. If possible, please use CGI.
This isn't valid perl; you've forgotten a `"` somewhere along the line. This is probably accidental, though, from cutting & pasting into the text of the question.