that looks correct. The questions (at the moment) are on lines 1-4 of questions.txt
If there is no data stored in the hash table for the person going through the questions, then %question is actually a 0 value, so to get the first line, I increase the value of %question outside of the loop.
If there is data stored, then this also ensures that the first question put to the person corresponds with the first location in the hash table that doesn't have an entry.

Then we get the loop which calls the alias question and relays the question to the person for them to answer.

Once they've answered the question, then the information is stored in the hash table and control of the script returns to the while loop, where %question is increased, then checked against the number of lines in questions.txt

A complicated answer, but hopefully one that will explain what I think should be happening.