in reply to Strange Error From BEGIN

Stop handrolling your CGI parsing logic. Use the CGI module instead. It is in the core so you don't even have to worry about installing it. All of the above can be replaced by:
use strict; use CGI qw(:standard); $CGI::POST_MAX = 1047576; sub init { my $results; foreach my $param (param()) { $results{$param} = [param($result)]; } return $result; }
OK, throwing in strict.pm was gratuitous goodness that was not needed for the rewrite. And as you can see from the example, given how convenient param() is you don't need to have an init method at all.