П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180637 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 79086 раз(а).

Учебник HTML.
Просмотров 75822 раз(а).

Руководство по PHP5.
Просмотров 46878 раз(а).

Хостинг через призму DNS.
Просмотров 54328 раз(а).

Подборка текстов стандартных документов.
Просмотров 46690 раз(а).

Учебник PHP - Самоучитель
Просмотров 52902 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53512 раз(а).

Внешние атаки...
Просмотров 43261 раз(а).

Учебник PHP.
Просмотров 38784 раз(а).

SSI в примерах.
Просмотров 28693 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 9: Управляющие структуры.
9.1 Оператор last

Выполняя некоторые из предыдущих упражнений, вы, возможно, иногда думали: "Если бы в моем распоряжении был С-оператор break, все было бы нормально". Даже если такая мысль и не приходила вам в голову — все равно позвольте мне рассказать о Perl-операторе для преждевременного выхода из цикла last.

Оператор last обеспечивает выход из самого внутреннего блока цикла, в котором расположен этот оператор*, передавая управление оператору, следующему непосредственно за этим блоком. Например:

while (что-то) { 
  что-то;
  ЧТО-ТО! ЧТО-ТО;

  if (условие) {
    что-то_или_другое;
    что-то_или_другое;
    last; # выход из цикла while
  }

  еще что-то, еще что-то;
}

# last передает управление в эту точку программы

* Конструкция типа do (} while/until с точки зрения операторов next, last и redo циклом не считается.

если условие истинно, то выполняются строки что-то_или_другое, после чего оператор lastзавершает циклwhile.

Оператор last учитывает только блоки, образующие цикл, а не блоки, необходимые для построения определенных синтаксических конструкций. Это значит, что блоки для операторов if и else, равно как и для конструкций do {} while/until, "не считаются"; учитываются только блоки, которые образуют циклы for, foreach, while, until и "голые" блоки. ("Голый" блок — это блок, не являющийся частью более крупной конструкции, например цикла, подпрограммы, оператора if/then/else.)

Допустим, мы хотим посмотреть, было ли почтовое сообщение, сохраненное в файле, послано пользователем merlyn. Такое сообщение могло выглядеть следующим образом:

From: merlyn@stonehenge.com (Randal L. Schwartz)
To: stevet@ora.com
Date: Ol-DEC-96 08:16:24 PM -0700
Subject: A sample mail message
Here's the body of the mail message. And here is some more.

Нам нужно было бы найти в этом сообщении строку, которая начинается словом From:, а затем посмотреть, не содержит ли эта строка регистрационное имя merlyn.

Это можно было бы сделать так:

while (<STDIN>) ( # читать входные строки

  if (/^From: /) { # начинается ли строка со слова From:? Если да... 

    if (/merlyn/) { # то сообщение от merlyn!
      print "Email from Randal! It's about time!\n";
    }

    last; # дальше искать строки From: не нужно, поэтому выйти
  } # конец цикла "if from:"

  if (/^5/) ( # пустая строка?
    last; # если да, больше строки не проверять 
  }

} # конец цикла while

Найдя строку, которая начинается со слова From:, мы выходим из цикла, потому что хотим видеть только первую такую строку. Кроме того, поскольку заголовок почтового сообщения заканчивается на первой пустой строке, мы можем выйти и из основного цикла.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru