Forum Moderators: coopster & phranque

Message Too Old, No Replies

I'm not dividing by zero!

But it says I am.

         

adni18

3:58 pm on Sep 27, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Here's my script:
#!/usr/bin/perl

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!

timster

5:23 pm on Sep 27, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



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?";

Arem

12:45 pm on Sep 28, 2004 (gmt 0)

10+ Year Member



Thank you, Timster! That worked well. (I had the same problem)

adni18

12:54 pm on Sep 28, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Yes it worked well. (^He's just a friend)