use CGI::Carp qw(fatalsToBrowser);
#!/usr/local/bin/perl
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
} else {
print "Content-type: text/html\n\n";
print "<P>IronMagma Form Error";
}
foreach $pair (@pairs) {
($key, $value) = split (/=/, $pair);
$key =~ tr/+/ /;
$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~s/<!--(.¦\n)*-->//g;
if ($formdata{$key}) {
$formdata{$key} .= ", $value";
} else {
$formdata{$key} = $value;
}
}
print "Content-type:text/html\n\n";
open(FILE, '> ratewallpaper1.txt');
@a = split(/\¦/, <FILE>);
$newtotal=@a[1]+1;
$newaverage=@a[2]+$formdata{'vote'};
$finalaverage=$newaverage/@a[1];
print FILE "@a[0]\¦$newtotal\¦$finalaverage\¦@a[3]\¦@a[4]";
close(FILE);
$wallname="Palanet";
print "<HEAD>\n<TITLE>Thank You - Iron Magma</TITLE>\n<link rel=stylesheet href=[NOTSHOWN]/imstyle.css>\n<STYLE>\ninput \{border:white solid 1px\;color:white\;background:#000000\}\n</STYLE>\n</HEAD><BODY bgcolor=black style=color:white>\n\nThank you for voting for $wallname.<br>The current results for $wallname are now:<br>$newtotal votes<br>Average Rating: $finalaverage <br><input type=submit value='Close this Window' onClick=window.close()>";
ratewallpaper1.txt says:
Palanet¦1¦1¦palanet¦../view.html?resolution=auto&&wallpaper=palanet
whenever I submit the form on my page, It says:
Software error:
Illegal division by zero at rate.cgi line 39.
Please help!
open(FILE, '> ratewallpaper1.txt');
@a = split(/\¦/, <FILE>);
Here you're opening a file for writing (and may have blown away your input file), and then trying to read from it.
You can test this sort of thing with
or die or or warn. open(FILE, 'ratewallpaper1.txt') or die "Can't open file: $!";
@a = split(/\¦/, <FILE>) or warn "Bad read - no data?";