Forum Webscript.Ru
Программирование => Perl => Тема начата: Evgeny от 11 Июня 2002, 16:08:49
-
Прошу прощеня за такой глупый вопрос.
Как прервать цикл
do
{
...
}
while (...);
last - это для foreach, for, while(){},
но не do {} while(); !
Раньше без этого обходился, даже не задумывался над этим.
Заранее спасибо.
-
last - это для foreach, for, while(){},
но не do {} while(); !
Почему?
#!/usr/bin/perl
$i = 0;
while (1)
{
print ++$i."\\n";
last;
}
---------- Perl Run ----------
1
Normal Termination
Output completed (0 sec consumed).
-
Почему?
Я же написал do {...} while(...);
Попробуй это:
#!/usr/bin/perl
$i = 0;
do
{ print ++$i."\\n";
last;
}
while (1);
-
Evgeny
Как прервать цикл
do
Вопрос некорректен: do (даже с модификатором while) не является настоящим оператором цикла и команда last в нем работать не должна. Для этого используй обычные операторы цикла (в смысле, не do) или условия.
Chs
Evgeny спрашивал не о while, а о do... while....
-
#!/usr/bin/perl
use warnings;
use strict;
DO: {
my $i = 0;
do {
print ++$i, "\\n";
last DO if $i == 10;
} while (1);
}
-
Так как do не является блоком, то приходиться использовать цикл с одной итерацией, то есть голый блок.
-
Так как do не является блоком, то приходиться использовать цикл с одной итерацией, то есть голый блок.
Спасибо, хотя не понятно, из каких соображений разработчики Перла решили отнести конструкцию do .. while() к не-блоку...