#!perl -wT use strict; # report a loss, and recalculate rankings. use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = new CGI; print $q->header; my $winner = $q->param("winner"); my $description = $q->param("description"); my $username = $q->param("username"); my $password = $q->param("password"); if ($username) { open (DATA, "data.txt"); my @data = ; close (DATA); my (@rank, @player, @player_password, $the_winner, $the_loser, $winner_rank, $loser_rank); for (my $i=0; $i<@data; $i++) { my @entry = split /\*/, $data[$i]; $rank[@rank] = $entry[0]; $player[@player] = $entry[1]; chomp($entry[2]); $player_password[@player_password] = $entry[2]; if ($winner eq $entry[1]) { $the_winner=$i; $winner_rank=$entry[0]; } if ($username eq $entry[1]) { $the_loser=$i; $loser_rank=$entry[0]; } } $rank[$the_winner] += (int(($loser_rank - $winner_rank)/2)-1) if ($winner_rank>$loser_rank); $loser_rank = $rank[$the_winner]; if ($username eq $player[$the_loser] && $password eq $player_password[$the_loser]) { for (my $i=0; $i<@player; $i++) { $rank[$i]++ if ($rank[$i] >= $loser_rank && $rank[$i] < $winner_rank && $i != $the_winner); } my @indices = (0 .. $#rank); my @sorted_indices = sort {$rank[$a] <=> $rank[$b]} @indices; @rank = @rank[@sorted_indices]; @player= @player[@sorted_indices]; @player_password = @player_password[@sorted_indices]; open (OUT, ">data.txt"); for (my $i=0; $i < @rank; $i++) { print OUT "$rank[$i]*$player[$i]*$player_password[$i]\n"; } close (OUT); my $thetime = localtime; my @entry = split(' ', $thetime); $thetime = "$entry[1]/$entry[2]/$entry[4]"; open (OUT, ">>matches.txt"); print OUT "$winner*$username*$description*$thetime\n"; close (OUT); print "Thank you. You submitted:
\n"; print "Winner: $winner
\n"; print "Loser: $username
\n"; print "Description: $description
\n"; print "Time: $thetime\n"; } else { print "I hope you die, cheating scum."; } } else { print << "END_OF_FORM";
Username:
Password:
Winner:
Description:
END_OF_FORM } print << "END_OF_MENU";
Sign Up Standings Report Loss
END_OF_MENU