Я пытаюсь написать программу, имитирующую очередь в бакалейной лавке. если введено, это позволяет пользователям добавлять имена. если введено c, это имитирует человека, выходящего из очереди. если введено p, он печатает список имен. если введено q, он завершает работу.
мой код просто приводит к бесконечному циклу, и я не уверен, почему. Каждый раз, когда я пытаюсь ввести значения, он просто считывает неверный ввод и не выходит. Я не уверен, работают ли другие вещи или нет, но это не то, с чем мне нужна помощь.
$choice="";
$name;
@line=();
print "\n";
print "Choose an option:\n";
print "a: Add person to end of line\n";
print "c: Call the next person in line\n";
print "p: Print the list of people in line\n";
print "q: Quit\n";
print "\n";
while ($choice ne "q") {
print "Your choice:";
$choice = <>;
print "\n";
if($choice eq "a") {
print "Enter name:";
$name = <>;
push(@line,$name);
}
elsif ($choice eq "c") {
shift(@line);
}
elsif ($choice eq "p") {
for ($i=0;$i<=scalar(@line);$i++) {
print (@line[$i]);
}
}
elsif ($choice eq "q") {
exit;
}
else {
print "Invalid option";
}
}