Шаг 22.
Оператор безусловного перехода

    На этом шаге мы рассмотрим оператор безусловного перехода.

    В языке программирования Perl есть три формы этого оператора:

     goto МЕТКА; 
     goto ВЫРАЖЕНИЕ; 
     goto &ПОДПРОГРАММА;

    Первая форма goto МЕТКА передает управление на оператор с меткой МЕТКА, который может быть расположен в любом месте программы, за исключением конструкций, требующих определенных инициирующих действий перед их выполнением. К ним относятся цикл foreach и определение подпрограммы sub.


    Замечание. Компилятор Perl не генерирует никаких ошибок, если в операторе goto задана несуществующая метка, или он передает управление в конструкцию foreach или sub. Все ошибки, связанные с этим оператором, возникают во время выполнения программы.

    Во второй форме оператора безусловного перехода goto ВЫРАЖЕНИЕ возвращаемым значением выражения должна быть метка, на которую и будет передано управление в программе. Эта форма оператора goto является аналогом вычисляемого goto языка FORTRAN:

    @label = ("OUT", "IN"); 
    goto $label[1];

    В приведенном фрагменте кода выражение в операторе goto будет вычислено равным строке IN и именно на оператор с этой меткой будет передано управление.

    Последняя форма оператора goto &ПОДПРОГРАММА подставляет вызов указанной в операторе подпрограммы в выполняемой в данной момент подпрограмме. Эта процедура осуществляется подпрограммами AUTOLOAD(), которые загружают одну подпрограмму, скрывая затем, что на самом деле сначала была вызвана другая подпрограмма.


    Замечание. Описание оператора goto приведено нами исключительно для полноты изложения. В программах его следует избегать, так как он делает логику программы более сложной и запутанной. Намного лучше использоватъ структурированные команды управления потоком вычислений next, last и redo. Если в процессе программирования выяснится, что не обойтись без оператора безусловного перехода, то это будет означать только одно: на этапе проектирования программы она была не достаточно хорошо структурирована. Вернитесь снова к этапу проектирования и постарайтесь реструктурировать ее таким образом, чтобы не требовалось использовать оператор goto.

    На следующем шаге мы приведем несколько примеров использования рассмотренных операторов.




Предыдущий шаг Содержание Следующий шаг