#!perl -wT use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = new CGI; print $q->header; my $username = $q->param("username"); my $password = $q->param("password"); if ($username) { open (DATA, "data.txt"); my @data = ; close (DATA); open (OUT, ">>data.txt"); print OUT scalar(@data)+1, "*$username*$password\n"; close (OUT); print "

Thank you for signing up!
"; print "Your username is $username, your password is $password."; print "

"; } else { print "
\n"; print "Username:
\n"; print "Password:
\n"; print ""; print "
"; } print << "END_OF_MENU";
Sign Up Standings Report Loss
END_OF_MENU #### #!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 ##
## #!perl -wT use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; open (DATA, "data.txt"); my @data = ; close (DATA); my (@rank, @player, @player_password); 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]; } open (MATCHES, "matches.txt"); my @matches = ; close (MATCHES); my %wins; my %losses; foreach my $player (@player) { $wins{$player} = 0; $losses{$player} = 0; foreach my $match (@matches) { my @entry = split /\*/, $match; if ($player eq $entry[0]) { $wins{$player}++; } if ($player eq $entry[1]) { $losses{$player}++; } } } print "\n"; print "\n"; for (my $i=0; $i < @rank; $i++) { my $win_percentage = substr(($wins{$player[$i]}/($wins{$player[$i]}+$losses{$player[$i]})),0,6) unless (($wins{$player[$i]}+$losses{$player[$i]}) < 1); $win_percentage = 0 if (($wins{$player[$i]}+$losses{$player[$i]}) < 1); print "\n"; } print "
RankPlayerWinsLossesWin Percentage
$rank[$i]$player[$i]$wins{$player[$i]}$losses{$player[$i]}$win_percentage
\n"; print << "END_OF_MENU";
Sign Up Standings Report Loss
END_OF_MENU ##
## #!perl -wT use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = new CGI; print $q->header; my $username = $q->param("username"); my $password = $q->param("password"); my $delete = $q->param("delete"); my $deluser = $q->param("deluser"); if ($username) { if ($username eq "admin" && $password eq "monksofperl") { if ($delete) { open (MATCHES, "matches.txt"); my @matches = ; close (MATCHES); open (OUT, ">matches.txt"); for (my $i=0; $i<@matches; $i++) { print OUT "$matches[$i]" if ($i != $delete); } close (OUT); } if ($deluser) { open (DATA, "data.txt"); my @data = ; close (DATA); open (OUT, ">data.txt"); for (my $i=0; $i<@data; $i++) { print OUT "$data[$i]" if ($i != $deluser); } close (OUT); } open (MATCHES, "matches.txt"); my @matches = ; close (MATCHES); open (DATA, "data.txt"); my @data = ; close (DATA); print "

Matches

\n"; print ""; print "\n"; for (my $i=0; $i<@matches; $i++) { my @entry = split /\*/, $matches[$i]; print "\n"; } print "
 WinnerLoserDescriptionDate
Reap$entry[0]$entry[1]$entry[2]$entry[3]
\n"; print "

Report a loss
\n"; print "

\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
Winner:
Loser:
Description:
Loser's pw:
\n"; print ""; print "
"; print "

Users

\n"; print ""; print "\n"; for (my $i=0; $i<@data; $i++) { my @entry = split /\*/, $data[$i]; print "\n"; } print "
 RankUsernamePassword
Reap$entry[0]$entry[1]$entry[2]
\n"; } else { print "

UNAUTHORIZED

"; } } else { print "
\n"; print "Username:
\n"; print "Password:
\n"; print ""; print "
"; } print << "END_OF_MENU";
Sign Up Standings Report Loss
END_OF_MENU ##
## #!perl -wT use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = new CGI; print $q->header; my $user = $q->param("user"); open (MATCHES, "matches.txt"); my @matches = ; close (MATCHES); open (DATA, "data.txt"); my @data = ; close (DATA); my %rankings; foreach my $line (@data) { my @entry = split /\*/, $line; $rankings{$entry[1]} = $entry[0]; } my ($x, $wins, $losses, @winners, @losers, @descriptions, @dates); $wins = $losses = 0; if (exists($rankings{$user})) { foreach my $match (@matches) { my @entry = split /\*/, $match; $wins++ if ($entry[0] eq $user); $losses++ if ($entry[1] eq $user); if ($entry[0] eq $user || $entry[1] eq $user && $x<10) { $winners[@winners] = $entry[0]; $losers[@losers] = $entry[1]; $descriptions[@descriptions] = $entry[2]; $dates[@dates] = $entry[3]; $x++; } } } print "

$user

\n"; print "

Wins: $wins    Losses: $losses

Last 10 Matches
"; print ""; print ""; for (my $i=0; $i<@winners; $i++) { print "\n"; } print "
DateWinnerLoserDescription
$dates[$i]$winners[$i]$losers[$i]$descriptions[$i]
\n"; print << "END_OF_MENU";
Sign Up Standings Report Loss
END_OF_MENU