1. die verwendung von use strict und use warnings wuerde dir schon einen grossteil der fehler zeigen
2.
($thing, $val) = split(' ');
besser:
my ($thing, $val) = split(/\s+/, $_, 2);
3. $data('total') war schon... $data{'total}
4. $data{'_[0]} soll wohl $data{$_[0]} sein
5. es kann passieren, dass die die's vor dem content-type ausgegeben werden (weil STDERR ungebuffert ausgegeben wird, waehrend STDOUT gebuffert ist); vielleicht ist es zum entwickeln besser, auf die die's zu verzichten und da eine fehlermeldung via print auszugeben.
6. Interessant zum entwickeln ist auch
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
das gibt dir mehr feedback
7. die syntax eines scriptes kannst du testen, indem du es folgendermaszen ausfuehrst:
perl -c script.pl
dabei wird es (bis auf BEGIN- und aehnliche bloecke) nicht ausgefuehrt, sondern nur die syntax gecheckt. solange das noch fehler zurueckliefert, brauchst du igar nicht versuchen, es auf dem webserver zum laufen zu bringen...\n\n
<!--EDIT|Strat|1113909085-->