Forum Webscript.Ru
Программирование => Perl => Тема начата: gor от 20 Января 2005, 00:57:30
-
Пишу бота, используя Net::IRC.
Вот потребовалось сделать реакцию на событие не мгновенную, а с произвольной задержкой.
Не подскажете как реализовать?
-
perldoc -f sleep ?
-
Но ведь при sleep останавливается весь процесс?
А мне нужно, чтобы во время этой задержки бот реагировал на другие события...
То есть, в конечном итоге, мне нужно что-то вроде: если произошло то-то, выполнить это через ПОЛЧАСА, а пока продолжать работать дальше.
Можно по-другому. Каждую секунду проверять текущее время на соответствие нужному. Но как делать что-то КАЖДУЮ секунду, если там можно только описать реакцию на события?
Что же делать?..
-
gor:
Что же делать?..
Варианте №1
$time = time;
while (time > $time+1800){ main_part() }
do_something_else();
-
NeoNox:
while (time > $time+1800){ main_part() }
правда при этом есть опасность, что будет повешено довольно много таких отложенных событий одновременно..
-
А зачем тогда прокладка между клавиатурой и стулом?
В крайнем случае есть функция last.