Just a couple of comments on coding style
- You don't really *need* to comment what the purpose of your variables are if they're clearly labeled (they were pretty clear to me at least), although this is more of a personal preference than anything.
- It's good practice to keep your line-length under 80 columns for several reasons
- it shows that your expression is too long and probably needs to be simplified (as always there are exceptions)
- 80 cols is the standard width for terms which leads on to ...
- code is a lot easier to read when the lines are nice'n'short (again this is personal opinion)
- Here's a good rule of thumb for the amount arguments to pass to functions - if you've got 7+ arguments you probably don't have enough. I think you could reduce the amount arguments you pass about by taking advantage of perl's aggregate data types.
- Ack - no use strict in sight! This is pretty much a must for anything but the smallest of perl programs, and the warnings pragma is also muchly helpful.
- Is there any reason why you're passing some of your scalar variables as references? While this is helpful and sometimes necessary when dealing with hashes and arrays, scalars are passed by value so don't needed to be passed by reference (unless you've got a good reason to of course).
And do make sure you get onto using CGI
and watching out for potential security holes (see. opening a pipe to sendmail
 this is indeed sarcasm but unfortunately I cannot take credit for this masterful piece of wit which was introduced to me by a co-worker
 that, however, is mine ;-)