Your question was a bit short on the underlying data it operates on. But if I read your code right, all you need to do is exchange your loops. I.e. the outer loop with the names/aligndata stuff should be inner loop and the loop over @$scoreData should be outer loop.
The problem is that you read from a file ($fhnames) in the aligndata loop. If it gets to be inner loop it shouldn't do that anymore. Hopefully the data in the file is not to big to be read into memory, otherwise you might have to compact it or store it into a database. But since you want to print it in one line it seems that should not be a problem.
After you have exchanged the loops all you need to do is collect the single chars instead of printing them directly and print the summary directly after the end of the inner loop