in reply to use strict

Here's the actual set of errors that I saw listed when I placed your code into a file called 'test.perl' and did:
perl -cw test.perl
Note that the hash array %total, refered to in the second line of the error report, appears on only one line in the code, where values are assigned to it, and it's never used thereafter. Also, all the other variables mentioned in this list occur only once, embedded in those long print statements for table rows:
"my" variable $name masks earlier declaration in same scope at line 17 +. Global symbol "%total" requires explicit package name at line 47. Global symbol "$ttlhrsbottum" requires explicit package name at line 5 +8. Global symbol "$ttlhrsbudrow" requires explicit package name at line 5 +9. Global symbol "$ttlhrscaptan" requires explicit package name at line 6 +0. Global symbol "$ttlhrshughes" requires explicit package name at line 6 +1. Global symbol "$ttlhrsmarchand" requires explicit package name at line + 62. Global symbol "$ttlhrsmedina" requires explicit package name at line 6 +3. Global symbol "$ttlhrsnewbrough" requires explicit package name at lin +e 64. Global symbol "$ttlhrsrico" requires explicit package name at line 65. Global symbol "$ttlhrsshelton" requires explicit package name at line +66. Global symbol "$ttlhrssweredoski" requires explicit package name at li +ne 67. Global symbol "$ttlhrstryon" requires explicit package name at line 68 +. Global symbol "$ttlhrswerner" requires explicit package name at line 6 +9. Global symbol "$ttlhrswilliamspearce" requires explicit package name a +t line 70. /tmp/test.perl had compilation errors.
So, removing "use strict" gets rid of the error reports, but does it make the table look the way you'd want it to? (Or are these variables just residue from some older version of the script, and they shouldn't be here anymore anyway?)

update: Since you're using CGI anyway, why not use its various methods for printing HTML structure, like $q->header, $q->start_html, $q->table, $q->Tr etc, rather than struggling to type all those HTML tags yourself into quoted strings? It could make things a lot easier and more legible for you.

one more update: It looks like your table rows are devoted to individual names -- and these names are related to the undeclared variables, in addition to being used as hash keys in one of your data structures. As you work on fixing this, consider that you can -- should -- print the table rows in a loop, just like the one you had earlier in the code:

foreach $name (@data) { ... # print a table row for $name }