>> *{$name}=sub { &$c };
VVP> зачем враппер?
VVP> *$name = \&$c;
ну потому что он содержит еще код, а в данном примере этот код не приведен :)
профайлер свой делаю :)
>> но если функция представляет собой константную функцию (например
>> константы в каком-то модуле вроде Errno) то получаем варнинг про
>> попытку переопределения константной функции
>>
>> Constant subroutine ...
>>
>> Я ковырялся в поисках директивы которая отменяет этот варнинг, но
>> не нашел варианта. Так же не нашел можно ли по ссылке на функцию определить
>> не константная ли она?
>>
>> сейчас тупо перехватил варнинг
>> $SIG{__WARN__}=sub { $is_constant=1 if $_[0]=~/^Constant sub/ };
VVP> константные сабы компилятся и их переопределение вызывает некоторые
VVP> "неприятные" для интерпретатора операции.
это понятно, поэтому хочется их как-то отделить от остальных
и не переопределять
>> и после переопределения если $is_constant установлено в true то
>> так вылавливаю константные ф-ции. хотелось бы от этого хака избавиться
VVP> Вообще на мой взгляд делаете что-то странное :)
VVP> Не хотите расписать задачу в более общем виде? Я так думаю есть более
VVP> элегантное решение.
ну обычная задача профайлинга:
проходим по полному списку всех функций
вешаем на них врапперы, измеряем время итп
отсюда сразу растут следующие задачи:
1. одна функция может быть импортирована в кучу пакетов, соответственно
ее надо (желательно) переопределить лишь один раз
2. хорошо бы именно импортированные алиасы отбросить
3. отделить константные функции и их не трогать
4. не конфликтовать с модулями которые сами делают аналогичную работу
--
... mpd is off
. ''`. Dmitry E. Oboukhov
: :’ : email: [email protected] jabber://[email protected]
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
signature.asc
Description: Digital signature
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
