#!/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; $winCutoff = 0; # 10 $saveCutoff = 0; # 5 $kCutoff = 0; # 75 $hrCutoff = 0; # 10 $rbiCutoff = 0; # 50 $runCutoff = 0; # 50 $sbCutoff = 0; # 10 $valCutoff = 0; $tValCutoff = 0; $showKeepers = 0; $valToSortBy = "val"; # val|tVal $moneyAvail = 2600; # money available to spent (10 teams * $260) $date = `date`; open (BATTERS, "Batting_NL.csv") || die "couldn't open Batting_NL.csv\n"; while () { next if (/^Lastname/); next if (/^Baseball HQ/); (@fields) = split /,/; $name = "$fields[0],$fields[1]"; $player{$name}{pos} = $fields[4]; $player{$name}{team} = $fields[5]; $player{$name}{val} = $fields[24]; $player{$name}{runs} = $fields[9]; $player{$name}{hrs} = $fields[13]; $player{$name}{rbi} = $fields[14]; $player{$name}{sbs} = $fields[17]; $player{$name}{obp} = $fields[20]; if ($player{$name}{val} >= $valCutoff) { $runsAvail += $player{$name}{runs} if ($player{$name}{runs} > $runCutoff); $hrsAvail += $player{$name}{hrs} if ($player{$name}{hrs} > $hrCutoff); $rbiAvail += $player{$name}{rbi} if ($player{$name}{rbi} > $rbiCutoff); $sbsAvail += $player{$name}{sbs} if ($player{$name}{sbs} > $sbCutoff); } } close (BATTERS); $fullHrsAvail = $hrsAvail; $fullSbsAvail = $sbsAvail; $fullRbiAvail = $rbiAvail; $fullRunsAvail = $runsAvail; open (PITCHERS, "Pitching_AL.csv") || die "couldn't open Pitching_AL.csv\n"; while () { next if (/^Lastname/); next if (/^Baseball HQ/); (@fields) = split /,/; $name = "$fields[0],$fields[1]"; if ($player{$name}) { print "$name already found!\n"; next; } $player{$name}{pos} = 1; $player{$name}{team} = $fields[4]; $player{$name}{val} = $fields[22]; $player{$name}{wins} = $fields[7]; $player{$name}{saves} = $fields[10]; $player{$name}{ks} = $fields[18]; $player{$name}{era} = $fields[19]; $player{$name}{whip} = $fields[20]; if ($player{$name}{val} >= $valCutoff) { $winsAvail += $player{$name}{wins} if ($player{$name}{wins} >= $winCutoff); $savesAvail += $player{$name}{saves} if ($player{$name}{saves} >= $saveCutoff); $ksAvail += $player{$name}{ks} if ($player{$name}{ks} >= $kCutoff); } } close (PITCHERS); $fullSavesAvail = $savesAvail; $fullWinsAvail = $winsAvail; $fullKsAvail = $ksAvail; open (ROSTERS, "Mikita_rosters.csv") || die "couldn't open Mikita_rosters.csv\n"; while () { next if (/^Last,First/); next if (/^\s*$/); 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}++; $owners{$fields[4]}{totalSalary} += $fields[3]; $moneyAvail -= $player{$name}{salary}; if ($player{$name}{val} >= $valCutoff) { if ($player{$name}{pos} == 1) { $winsAvail -= $player{$name}{wins} if ($player{$name}{wins} >= $winCutoff); $savesAvail -= $player{$name}{saves} if ($player{$name}{saves} >= $saveCutoff); $ksAvail -= $player{$name}{ks} if ($player{$name}{ks} >= $kCutoff); } else { $runsAvail -= $player{$name}{runs} if ($player{$name}{runs} >= $runCutoff); $hrsAvail -= $player{$name}{hrs} if ($player{$name}{hrs} >= $hrCutoff); $sbsAvail -= $player{$name}{sbs} if ($player{$name}{sbs} >= $sbCutoff); $rbiAvail -= $player{$name}{rbi} if ($player{$name}{rbi} >= $rbiCutoff); } } } else { $player{$name}{keeper} = 0; } } close (ROSTERS); print "Money Available: $moneyAvail\n"; $hrMultiplier = ($moneyAvail * .7 / 5) / $hrsAvail; printf "HRs Available: $hrsAvail (%1.5f) of $fullHrsAvail (%d \%)\n", $hrMultiplier, $hrsAvail/$fullHrsAvail*100; $rbiMultiplier = ($moneyAvail * .7 / 5) / $rbiAvail; printf "RBI Available: $rbiAvail (%1.5f) of $fullRbiAvail (%d \%)\n", $rbiMultiplier, $rbiAvail/$fullRbiAvail*100; $runMultiplier = ($moneyAvail * .7 / 5) / $runsAvail; printf "Runs Available: $runsAvail (%1.5f) of $fullRunsAvail (%d \%)\n", $runMultiplier, $runsAvail/$fullRunsAvail*100; $sbMultiplier = ($moneyAvail * .7 / 5) / $sbsAvail; printf "SBs Available: $sbsAvail (%1.5f) of $fullSbsAvail (%d \%)\n", $sbMultiplier, $sbsAvail/$fullSbsAvail*100; $winMultiplier = ($moneyAvail * .3 / 3) / $winsAvail; printf "Wins Available: $winsAvail (%1.5f) of $fullWinsAvail (%d \%)\n", $winMultiplier, $winsAvail/$fullWinsAvail*100; $saveMultiplier = ($moneyAvail * .3 / 3) / $savesAvail; printf "Saves Available: $savesAvail (%1.5f) of $fullSavesAvail (%d \%)\n", $saveMultiplier, $savesAvail/$fullSavesAvail*100; $kMultiplier = ($moneyAvail * .3 / 3) / $ksAvail; printf "Ks Available: $ksAvail (%1.5f) of $fullKsAvail (%d \%)\n", $kMultiplier, $ksAvail/$fullKsAvail*100; foreach $name (keys %player) { if ($player{$name}{pos} == 1) { $player{$name}{winV} = $player{$name}{wins} * $winMultiplier if ($player{$name}{wins} >= $winCutoff); $player{$name}{saveV} = $player{$name}{saves} * $saveMultiplier if ($player{$name}{saves} >= $saveCutoff); $player{$name}{kV} = $player{$name}{ks} * $kMultiplier if ($player{$name}{ks} >= $kCutoff); $player{$name}{tVal} = $player{$name}{winV} + $player{$name}{saveV} + $player{$name}{kV}; $totalWinValue += $player{$name}{winV}; $totalSaveValue += $player{$name}{saveV}; $totalKValue += $player{$name}{kV}; } else { $player{$name}{hrV} = $player{$name}{hrs} * $hrMultiplier if ($player{$name}{hrs} >= $hrCutoff); $player{$name}{runV} = $player{$name}{runs} * $runMultiplier if ($player{$name}{runs} >= $runCutoff); $player{$name}{rbiV} = $player{$name}{rbi} * $rbiMultiplier if ($player{$name}{rbi} >= $rbiCutoff); $player{$name}{sbV} = $player{$name}{sbs} * $sbMultiplier if ($player{$name}{sbs} >= $sbCutoff); $player{$name}{tVal} = $player{$name}{hrV} + $player{$name}{runV} + $player{$name}{rbiV} + $player{$name}{sbV}; $totalHRValue += $player{$name}{hrV}; $totalRBIValue += $player{$name}{rbiV}; $totalRunValue += $player{$name}{runV}; $totalSBValue += $player{$name}{sbV}; } $player{$name}{dtV} = $player{$name}{tVal} - $player{$name}{val}; $totalValue += $player{$name}{tVal}; } printf "Total Player Values = %d\n", $totalValue; printf "Total HR Value = %d\n", $totalHRValue; printf "Total RBI Value = %d\n", $totalRBIValue; printf "Total Run Value = %d\n", $totalRunValue; printf "Total SB Value = %d\n", $totalSBValue; printf "Total Win Value = %d\n", $totalWinValue; printf "Total Save Value = %d\n", $totalSaveValue; printf "Total K Value = %d\n", $totalKValue; foreach $name (keys %player) { $unsorted[$i++] = $name; } @sorted = sort { $player{$b}{$valToSortBy} <=> $player{$a}{$valToSortBy} } @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 ""; print OUT "C | 1B | 2B | "; print OUT "3B | SS | OF | "; print OUT "P | CI | MI | "; print OUT "Util
"; print OUT "\n"; # outer table if ($thispos eq "c") { print OUT "
Top Corner Infielders\n"; } elsif ($thispos eq "m") { print OUT "
Top Middle Infielders\n"; } elsif ($thispos eq "u") { print OUT "
Top Utility\n"; } else { print OUT "
Top $positions[$thispos]\n"; } print OUT "
PosRankOvrRankNameR\$tVdtVHR/WRBI/Sv\n"; print OUT "R/KSB/ERAOBP/WHIPOwnerContractS/VKeeper\n"; $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/)))); next unless (($player{$name}{val} >= $valCutoff) && ($player{$name}{tVal} >= $tValCutoff)); next if ((($player{$name}{keeper}) || ($player{$name}{contract} =~ /R/)) && ($showKeepers == 0)); $available++; if (($player{$name}{keeper}) || ($player{$name}{contract} =~ /R/)) { $thisOwner = $player{$name}{owner}; $owners{$thisOwner}{val} += $player{$name}{val}; $owners{$thisOwner}{tVal} += $player{$name}{tVal}; $color = "#bbbbbb"; $taken++; } else { $color = "yellow"; } printf OUT "
%d%d", $posRank++, $i+1; print OUT "$name"; print OUT "$player{$name}{val}"; printf OUT "%2.2f", $player{$name}{tVal}; printf OUT "%2.2f", $player{$name}{dtV}; if ($player{$name}{pos} == 1) { printf OUT "%1.2f ($player{$name}{wins})", $player{$name}{winV}; printf OUT "%1.2f ($player{$name}{saves})", $player{$name}{saveV}; printf OUT "%1.2f ($player{$name}{ks})", $player{$name}{kV}; printf OUT "%1.2f", $player{$name}{era}; printf OUT "%1.2f", $player{$name}{whip}; } else { printf OUT "%1.2f ($player{$name}{hrs})", $player{$name}{hrV}; printf OUT "%1.2f ($player{$name}{rbi})", $player{$name}{rbiV}; printf OUT "%1.2f ($player{$name}{runs})", $player{$name}{runV}; printf OUT "%1.2f ($player{$name}{sbs})", $player{$name}{sbV}; printf OUT "$player{$name}{obp}"; } if ($player{$name}{owner}) { print OUT "$player{$name}{owner}"; print OUT "$player{$name}{contract}"; if ($player{$name}{val} > 0) { $salPval = $player{$name}{salary} / $player{$name}{val}; } else { $salPval = 0; } printf OUT "%2.2f", $salPval; if ($player{$name}{keeper}) { print OUT "KEEP\n"; } else { print OUT " \n"; } next if (($thispos eq "c") || ($thispos eq "m")); if ($player{$name}{keeper}) { $owners{$player{$name}{owner}}{$positions[$thispos]}{keepers}++; } } else { print OUT "Available\n"; } } 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 "

"; print OUT ""; print OUT ""; foreach $name (keys %owners) { print OUT ""; print OUT ""; print OUT ""; print OUT ""; printf OUT "", $owners{$name}{tVal}; print OUT ""; } print OUT "
OwnerKeepersSalaryValtVal
$name$owners{$name}{totalkeepers}$owners{$name}{totalSalary}$owners{$name}{val}%d
"; print OUT "";