проблемы с бесконечным циклом Perl в моем коде

Я пытаюсь написать программу, имитирующую очередь в бакалейной лавке. если введено, это позволяет пользователям добавлять имена. если введено 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";
    }

    }
0
задан Lucas Lusnikov Holloway 19 April 2012 в 04:12
поделиться