言葉、それはうまく動作します。しかし、彼がしない場合は、それはエラーメッセージを印刷し、次の単語に移動します。私はそれが同じ単語の入力を再入力するようにユーザーに促したい。しかしどうですか?私は次にそれを試みたがうまくいかなかった。再実行ループ反復
再実行ループ反復
答えて
この場合は、redo
を使用して、を再起動することができます。
foreach my $word (@words)
{
print "Enter a line with word:$word\n";
chomp($input = <STDIN>);
if($input=~/$word/i)
{
print "Great\n";
} else {
print "Incorrect. Type a line contaning $word\n";
redo; # restart current iteration.
}
}
あまり推奨代替goto
を使用することです:
foreach my $word (@words)
{
INPUT:print "Enter a line with word:$word\n";
chomp($input = <STDIN>);
if($input=~/$word/i)
{
print "Great\n";
} else {
print "Incorrect. Type a line contaning $word\n";
goto INPUT;
}
}
私は外に出るため、無限while
ループ作成します。もちろん
#!/usr/bin/env perl
use strict;
use warnings;
my @words = qw(Hi world thanks);
foreach my $word (@words) {
print "Enter a line with word: $word\n";
while (1) {
chomp(my $input = <STDIN>);
if($input=~/$word/i) {
print "Great\n";
last;
} else {
print "Incorrect. Type a line contaning $word\n";
}
}
}
を私はおそらく分離う個々の単語の論理をサブにしてからループします:
#!/usr/bin/env perl
use strict;
use warnings;
my @words = qw(Hi world thanks);
get_word($_) for @words;
sub get_word {
my $word = shift or die "Need a word";
print "Enter a line with word: $word\n";
while (1) {
chomp(my $input = <STDIN>);
if($input=~/$word/i) {
print "Great\n";
last;
} else {
print "Incorrect. Type a line contaning $word\n";
}
}
}
redo
は間違いなくかわいいですが、ここにはwhile ... continue
のバージョンがあります。正しい単語が入力されたときにだけ終了する内部ループに依存し、それぞれの誤った答えに対して訂正を印刷します。
use strict;
use warnings;
my @words = qw(Hi world thanks);
foreach my $word (@words) {
print "Enter a line with word: $word\n";
while (my $input = <>) {
last if $input =~ /$word/;
} continue {
print "Incorrect. Type a line contaning $word\n";
}
print "Great\n";
}
この場合、chomp
は必須ではありません。
私は 'chomp'は本当にこれらのどれにも必要ではないと思いますが、正規表現がアンカーされておらず、' eq'の比較ではないからです。 –
@JoelBergerしたがって "この場合"。 – TLP
ああ、私はあなたがあなたの場合に意味すると思った。 Gotcha –
- 1. 反復ループが
- 2. Matlab:反復ループ
- 3. ループ反復リスト
- 4. ループ反復:
- 5. Python、ループ、反復
- 6. RmarkDown反復ループ
- 7. 反復foreachループ
- 8. レコードのセットをループ/反復してストアドプロシージャを実行
- 9. 変数反復(SAS)でループを実行してください
- 10. Dockerfileのループ/反復
- 11. PowerShellのループ反復
- 12. 再帰と反復
- 13. Ruby Doループと反復
- 14. ANTLRでのループの反復
- 15. Foreachループを反復する
- 16. Rのランダム反復ループ
- 17. VBA Forループ反復問題
- 18. ループを反復する
- 19. 棚上の反復/ループ
- 20. Sightly/HTLのループ反復中
- 21. 反復whileループ構文エラー
- 22. Matlabの再帰的ループは、反復できません
- 23. Linux実行時のELFセクションの "反復"
- 24. のpython 2.7反復インデックスエラー実行
- 25. 反復MapReduce(Twister)実行中例外
- 26. PHPイテレータ - 実行機能の反復が
- 27. 反復/非再帰マージソート
- 28. 反復で反復を追加するループ
- 29. Forループ内での反復各反復ごとに異なる
- 30. 次の反復へのbashループ反復の出力
ありがとうございました。できます。 perlはたくさんのことをやっていました。 –
私は 'redo'に投票します。 –
聖なる牛、 'redo'のための14 upvotes?私はperlタグで圧倒的な評価を見て以来、長い時間。 – TLP