last و next
کنترل دقیق حلقهها با last (شکستن) و next (رد کردن دور).
دو ابزار کنترلی
last— حلقه را همینجا تمام کن (مثل break)next— این دور را رد کن، برو بعدی (مثل continue)
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 |
این مبحث بخشی از دوره آموزش کامل پرل است.