Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Perl (http://www.flasher.ru/forum/forumdisplay.php?f=21)
-   -   goto &подпрограмма, exit, sleep - непонятно (http://www.flasher.ru/forum/showthread.php?t=43554)

sultan_M 04.03.2003 07:27

goto &подпрограмма, exit, sleep - непонятно
 
Привет всем! :)

У меня 3 вопроса :

1ый вопрос: Я прочитал документацию, в котором написали :

Цитата:

Функция Goto:

goto метка;
goto выражение;
goto &подпрограмма

Безусловный переход на метку. Нельзя делать переход на метку в структуру, которая должна быть инициирована, например, подпрограмму или цикл foreach и т.д. Вторая форма применяется для динамического определения перехода. Например:

goto ('метка1', 'метка2', 'метка3')[$i];

Здесь при $i = 0 будет переход на 'метка1', $i = 1 на 'метка2' и т.д. Третья форма (goto &подпрограмма) довольно "хитрый" метод подмены имени вызываемой подпрограммы именем текущей. Это используется в методе автозагрузки, когда нужно запустить другую процедуру, но под именем текущей, как будто та была вызвана раньше.
1ая и 2ая формы мне понятны, но 3ая о чём говорит ?!! :(

2ой воппрос: Функция exit используется по слелующему синтаксису :
Код:

exit выражение;
Причёт здесь выражение? И как используется с примером?

3ий вопрос: В данной документации тоже написали :
Цитата:

Функция Sleep:

sleep выражение;
sleep;

Приостанавливает работу скрипта на указанное число секунд или зацикливается, если аргумент отсутствует. Работа продолжается, если получен сигнал SIGALARM. Возвращает время фактической паузы.
1ая часть объяснения этой функции понятна, а следующие - нет :(

ОБЪЯСНИТЕ ЧАЙНИКУ ПОЖАЛУЙСТА!

sultan_M 06.03.2003 09:19

SPV где Вы??!!! :confused:

sultan_M 07.03.2003 07:40

Эээй! :mad:

Crazy 07.03.2003 08:35

Re: goto &подпрограмма, exit, sleep - непонятно
 
Цитата:

Оригинал написал(а) sultan_M

1ая и 2ая формы мне понятны, но 3ая о чём говорит ?!! :(

Первое правило: "икогда не читайте за завтраком советских газет". (c)

Процитированная тобой "документация" содержит бруд. Правильный текст:

Цитата:

The goto-&NAME form is quite different from the other forms of goto. In fact, it isn't a goto in the normal sense at all, and doesn't have the stigma associated with other gotos. Instead, it substitutes a call to the named subroutine for the currently running subroutine. This is used by AUTOLOAD subroutines that wish to load another subroutine and then pretend that the other subroutine had been called in the first place (except that any modifications to @_ in the current subroutine are propagated to the other subroutine.) After the goto, not even caller will be able to tell that this routine was called first.
Что оно делает: передает управление указанной процедуре, скрывая тот факт, что процедура, выполняемая в данный момент, вообще вызывалась. К примеру, если в процедуре X сделан "goto &Y", то при завершении процеры Y управление вернется не в X, а сразу тому, кто X вызывал.

Цитата:


2ой воппрос: Функция exit используется по слелующему синтаксису :

Открой документацию. Там все написано.

Цитата:

1ая часть объяснения этой функции понятна, а следующие - нет :(
Открой раздел про сигналы и управление процессами.

sultan_M 07.03.2003 09:35

Crazy :

Спасибо БОЛЬШОЕ! :)

А насчёт 2ого 3его?! :D

Crazy 07.03.2003 10:09

Перечитай мое сообщение еще раз. :) Цитировать несколько страниц документации тебе никто не будет. :)

SPV 13.03.2003 11:44

Сорри, я отдыхал после свадьбы... своей... :cool:

exit выражение;

Любая программа просто обязана возвращать хоть что-то процессу, её запустившему. Как правило она возвращает код ошибки, если такая произошла или 0 при успешном выполнении. Т.е. exit для всего скрипта это то-же самое, что и return для подпрограммы.

SIGALARM

Тут тебе не помешает почитать что-либо о межпроцессном обмене сигналами. В частности сигнал ALARM посылается в процесс при необходимости его принудительного завершения (например, если юзер нажимает CTRL+C в консольной программе). В Перле, как и в любом другом языке высокого уровня, есть возможность вешать свой обработчик (свою процедуру), которая будет выполняться по приходе различных сигналов.

sultan_M 16.03.2003 11:12

2_SPV:
Спасибо большое умный человек :)
Счастливой новой жизни...


Часовой пояс GMT +4, время: 13:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.