Ok, aside from -Tw and use strict; here's a few other suggestions..
In your param snarfing part, you might want to use something that works with defaults..
for example:
$across = param('across') ? param('across') : $across_default;
$down = param('down') ? param('down') : $down_default;
$team = param('team') ? pram('team') : $team_default;
# $move is safe, will use defaults or set params
$move = $down."_".$across;
CGI::Carp would be a good thing for error reporting (where the file open may die).
You open files inside if (param()) { but try and close them outside of the block.. it wont error, but it's ugly.
and lastly, probably more of a nitpick, you have a ton of file opening and closing.. there's probably a better way to handle that (like rewinding file)
-Syn0