[Moscow.pm] функция не из нашего пакета

Dmitry E. Oboukhov unera на debian.org
Пн Дек 29 02:09:31 PST 2008


>> *{$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: 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: 197 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081229/e955971d/attachment.bin>


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