#!/usr/local/bin/perl @positions = qw/Zero Pitchers Catchers FirstBasemen SecondBasemen ThirdBasemen Shortstops Outfielders CornerIF MiddleIF Utility/; @posPrintOrder = qw/2 3 4 5 6 7 1 c m u/; $needed[1] = 90; $needed[2] = 20; $needed[3] = 10; $needed[4] = 10; $needed[5] = 10; $needed[6] = 10; $needed[7] = 50; $needed[8] = 10; $needed[9] = 10; $moneyLeft = 1244; # money left to spend by all teams after keepers $runMultiplier = .131794; # money left / runs left $hrMultiplier = .532306; # money left / hrs left $rbiMultiplier = .135660; # money left / rbis left $winMultiplier = 1.628272; $saveMultiplier = 2.333959; $kMultiplier = .131432; $date = `date`; open (BATTERS, "NL_Batters.csv") || die "couldn't open NL_Batters.csv\n"; while () { if (/^"(.*)",(\d+),(\w+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)/) { $player{$1}{pos} = $2; $player{$1}{team} = $3; $player{$1}{val} = $4; $player{$1}{runs} = $5; $player{$1}{hrs} = $6; $player{$1}{rbi} = $7; $player{$1}{sbs} = $8; $player{$1}{obp} = $9; $player{$1}{hrV} = $6 * $hrMultiplier; $player{$1}{runV} = $5 * $runMultiplier; $player{$1}{rbiV} = $7 * $rbiMultiplier; $player{$1}{tVal} = $player{$1}{hrV} + $player{$1}{runV} + $player{$1}{rbiV}; $player{$1}{dtV} = $player{$1}{tVal} - $player{$1}{val}; } else { print "BAD LINE: $_"; } } close (BATTERS); open (PITCHERS, "AL_Pitchers.csv") || die "couldn't open AL_Pitchers.csv\n"; while () { if (/^"(.*)",(\w+),(\d+),(\d+),(\d+),(\d+),(\d\.\d+),(\d\.\d+)/) { $player{$1}{pos} = 1; $player{$1}{team} = $2; $player{$1}{val} = $3; $player{$1}{wins} = $4; $player{$1}{saves} = $5; $player{$1}{ks} = $6; $player{$1}{era} = $7; $player{$1}{whip} = $8; $player{$1}{winV} = $4 * $winMultiplier; $player{$1}{saveV} = $5 * $saveMultiplier; $player{$1}{kV} = $6 * $kMultiplier; $player{$1}{tVal} = $player{$1}{winV} + $player{$1}{saveV} + $player{$1}{kV}; $player{$1}{dtV} = $player{$1}{tVal} - $player{$1}{val}; } else { print "BAD LINE: $_"; } } close (PITCHERS); open (ROSTERS, "../Mikita_rosters.csv") || die "couldn't open ../Mikita_rosters.csv\n"; while () { chomp; @fields = ""; (@fields) = split /,/; $name = "$fields[0],$fields[1]"; unless ($player{$name}) { print "[$name] not found in projections\n"; next; } $player{$name}{contract} = $fields[2]; $player{$name}{salary} = $fields[3]; $player{$name}{owner} = $fields[4]; if ($fields[5]) { $player{$name}{keeper} = 1; $owners{$fields[4]}{totalkeepers}++; } else { $player{$name}{keeper} = 0; } } close (ROSTERS); foreach $name (keys %player) { $unsorted[$i++] = $name; } @sorted = sort { $player{$b}{val} <=> $player{$a}{val} } @unsorted; open (OUT, ">top_players.html") || die "couldn't open top_players.html\n"; print OUT ""; print OUT "\n"; print OUT "Last Updated: $date

"; foreach $thispos (@posPrintOrder) { print OUT ""; # outer table if ($thispos eq "c") { print OUT "
Top Corner Infielders"; } elsif ($thispos eq "m") { print OUT "
Top Middle Infielders"; } elsif ($thispos eq "u") { print OUT "
Top Utility"; } else { print OUT "
Top $positions[$thispos]"; } print OUT "
PosRankOvrRankNameValuetVdtVHR/WRBI/Sv"; print OUT "R/KOBP/ERASB/WHIPOwnerContractS/VKeeper"; $posRank = 1; $available = 0; $taken = 0; for ($i=0; $i < int(@sorted); $i++) { $name = $sorted[$i]; next unless ( ($player{$name}{pos} =~ /$thispos/) || (($thispos eq "c") && (($player{$name}{pos} =~ /3/) || ($player{$name}{pos} =~ /5/))) || (($thispos eq "m") && (($player{$name}{pos} =~ /4/) || ($player{$name}{pos} =~ /6/))) || (($thispos eq "u") && !($player{$name}{pos} =~ /1/)) || ($thispos == 7 && ( ($player{$name}{pos} =~ /7/) || ($player{$name}{pos} =~ /8/) || ($player{$name}{pos} =~ /9/)))); $available++ if ($player{$name}{val} > 0); if ($player{$name}{keeper}) { $color = "#bbbbbb"; $taken++ if ($player{$name}{val} > 1); $posRank++; } else { $color = "yellow"; } # next if ($player{$name}{keeper}); printf OUT "
%d%d", $posRank++, $i+1; print OUT "$name"; print OUT "$player{$name}{val}"; printf OUT "%d", $player{$name}{tVal}; printf OUT "%d", $player{$name}{dtV}; if ($player{$name}{pos} == 1) { printf OUT "%d%d%d%1.2f%1.2f", $player{$name}{winV}, $player{$name}{saveV}, $player{$name}{kV}, $player{$name}{era}, $player{$name}{whip}; } else { printf OUT "%d%d%d%d%d", $player{$name}{hrV}, $player{$name}{rbiV}, $player{$name}{runV}, $player{$name}{obp}, $player{$name}{sb}; } if ($player{$name}{owner}) { print OUT "$player{$name}{owner}"; print OUT "$player{$name}{contract}"; $salPval = $player{$name}{salary} / $player{$name}{val}; printf OUT "%1.2f", $salPval; if ($player{$name}{keeper}) { print OUT "KEEP"; } else { print OUT " "; } next if (($thispos eq "c") || ($thispos eq "m")); if ($player{$name}{keeper}) { $owners{$player{$name}{owner}}{$positions[$thispos]}{keepers}++; } } else { print OUT "Available"; } } print OUT "
"; $left = $available - $taken; $left = 0 if ($left < 0); printf OUT "Available: %d, Taken: %d, Left: %d, L/A = %3.2f", $available, $taken, $left, $left/$available; print OUT "

"; # end of inner player table } print OUT ""; print OUT "";