Thanks first for wrangling this code - your solutions worked really well. I have a couple of questions about your code, if you don't mind enlightening me, I'd appreciate it. (Always an apprentice!)
The most important question is why did you switch from the object oriented form of CGI to the function-oriented form?
Second question is using sysopen rather than open? I know that sysopen in general provides for more control - locking, etc. Is it generally better to use it than regular open?