in reply to Guess A Number

If a number is guessed right on the 1st try, that would be try number 1, not 0. Right? In that case, number of tries in the output should reflect reality...

... if ($guess == $answer) { printf "\nYou got it right!\nIt took you only %u tries.\n" , ++$tries; ...

Personally, i don't like the fact that $dbm{total}++ happens at two different places. You could move it out of the if..else structure (before or after).

At the end, there are just way too many print statements. What do you think of replacing them w/ "here document"?

Since you are saving the percentages in variables and lost percentage w/ won percentage make 100, you could just subtract one from 100 to calculate the other instead of doing the same calculation twice. If you were not temporarily storing the percentages, then you would have to calculate the two percentages individually.