Forum Webscript.Ru

Программирование => Perl => Тема начата: gor от 20 Января 2005, 00:57:30

Название: Net::IRC задержка реакции на событие
Отправлено: gor от 20 Января 2005, 00:57:30
Пишу бота, используя Net::IRC.
Вот потребовалось сделать реакцию на событие не мгновенную, а с произвольной задержкой.
Не подскажете как реализовать?
Название: Net::IRC задержка реакции на событие
Отправлено: NeoNox от 20 Января 2005, 12:36:56
perldoc -f sleep ?
Название: Net::IRC задержка реакции на событие
Отправлено: gor от 20 Января 2005, 19:01:28
Но ведь при sleep останавливается весь процесс?
А мне нужно, чтобы во время этой задержки бот реагировал на другие события...
То есть, в конечном итоге, мне нужно что-то вроде: если произошло то-то, выполнить это через ПОЛЧАСА, а пока продолжать работать дальше.

Можно по-другому. Каждую секунду проверять текущее время на соответствие нужному. Но как делать что-то КАЖДУЮ секунду, если там можно только описать реакцию на события?

Что же делать?..
Название: Net::IRC задержка реакции на событие
Отправлено: NeoNox от 21 Января 2005, 12:43:13
Цитировать
gor:
Что же делать?..

Варианте №1
$time = time;
while (time > $time+1800){ main_part() }
do_something_else();
Название: Net::IRC задержка реакции на событие
Отправлено: Green Kakadu от 21 Января 2005, 17:54:01
Цитировать
NeoNox:
while (time > $time+1800){ main_part() }

правда при этом есть опасность, что будет повешено довольно много таких отложенных событий одновременно..
Название: Net::IRC задержка реакции на событие
Отправлено: NeoNox от 21 Января 2005, 19:13:58
А зачем тогда прокладка между клавиатурой и стулом?
В крайнем случае есть функция last.