last و next

کنترل دقیق حلقه‌ها با last (شکستن) و next (رد کردن دور).

دو ابزار کنترلی

last — توقف

foreach my $i (1..100) {
  if ($i * $i > 500) {
    say "اولین عدد با مربع > 500: $i";
    last;      { دیگر ادامه نده }
  }
}

next — رد کردن

foreach my $i (1..10) {
  next if $i % 2 == 0;    { زوج‌ها را رد کن }
  print "$i ";            { فقط فردها }
}
print "\n";               { 1 3 5 7 9 }

با اصلاح‌گر — خیلی پرلی!

foreach my $x (1..20) {
  last if $x > 7;         { توقف شرطی }
  next if $x % 2 == 0;    { رد شرطی }
  print "$x ";
}
print "\n";               { 1 3 5 7 }

مثال: جستجو

my @data = (5, 12, 8, 23, 9);
my $target = 23;
my $found = 0;
foreach my $val (@data) {
  if ($val == $target) {
    $found = 1;
    last;      { پیدا شد، دیگر نگرد }
  }
}
say $found ? "پیدا شد!" : "نبود";

در حلقه تودرتو

last/next فقط داخلی‌ترین حلقه را اثر می‌گذارد:
foreach my $i (1..3) {
  foreach my $j (1..3) {
    last if $j == 2;      { فقط j می‌شکند }
    print "$i$j ";
  }
}
{ خروجی: 11 21 31 }

خلاصه

دستوراثرمعادل
lastحلقه فوراً تمامbreak
nextبه دور بعدی بپرcontinue

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط