[Moscow.pm] Ограничить время выполнения произвольной функции

Dmitry E. Oboukhov unera на debian.org
Пт Янв 29 06:05:22 PST 2010


MA> можно использовать "плохой" goto ;)

MA> perl -E 'sub foo { eval "sleep 10" } { local $SIG{ALRM} = sub { goto EXIT; };
MA> alarm 1; foo(); EXIT: alarm 0; say "exited" }'

Урраа!! заработало!

написал конструкцию:

    for (my $i = 0; caller $i; $i++) { 
        printf "\t %s %s %s %s()\n", caller $i; 
    } 

в функцию SIGALRM и затем сделал goto внутрь основной функции, затем
такую же конструкцию после метки.

в итоге первый вывод показывает стек из 10 элементов, а после метки из
трех!

так что "плохой гото" не такой уж и плохой!

спасибо большое!
-- 
... mpd playing: Manowar - 01 Achilles, Agony And Ecstasy In Eight Parts

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera на debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100129/0c41dfde/attachment-0001.bin>


Подробная информация о списке рассылки Moscow-pm