私は食料品のストーリーでラインをシミュレートするプログラムを作ろうとしています。 aを入力すると、ユーザーは名前を追加できます。 cを入力すると、行を離れる人をシミュレートします。 pを入力すると、名前のリストが出力されます。 qを入力すると終了します。私のコードでperlの無限ループに問題がある
私のコードは無限ループに終わってしまい、どうしてその理由がわかりません。試して値を入力するたびに、無効な入力が読み込まれ、終了しません。他のものが動作しているかどうかは分かりませんが、それは私が助けが必要なものではありません。
$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";
}
}
あなたは['chomp'](http://perldoc.perl.org/functions/chomp.html)について聞いたことがありますか? – ephemient
「厳密に使用してください。 'for'ループを' for $ person(@line){print "$ person \ n";}として書き直してください。 } 'これは、単純な要素アクセス(' $ line [$ i] ')があった場合に、ループ条件のオフ・バイ・ワンエラーと配列スライス(' @line [$ i] ')意図されました。 – pilcrow