Dein Script produziert zur Laufzeit eine ganze Menge warnings, die ausgegeben werden, bevor Du "print $c->header();" sagst.
Das führt zu einem recht eigentümlichen Header, an dem sich der FF verschluckt.
Mach Dein "print $c->header();" mal direkt nach "my $c = new CGI;", dann solltest Du es sehen. Behebe die dann sichtbaren Probleme und alles wird gut.