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

Dmitry E. Oboukhov unera на debian.org
Пн Дек 29 01:48:00 PST 2008


VVP> &App::foo и &main::foo это ссылки на одну и ту-же функцию.
VVP> так что выяснить что является настоящим именем, а что алиасом - неоднозначно.
VVP> можно к примеру пройтись рекурсивно по всем неймспейсам и найти все
VVP> имена по равенству ссылок.
я так (рекурсивным проходом) получаю список ссылок на функции
а дальше из этого списка хочется выкинуть дубликаты
но выкинуть именно так, чтобы в первую очередь выкидывались
импортированные алиасы а не оригиналы. но пока не нашел 
как решить.

кстати, может еще кто подскажет

допустим имеется ссылка на функцию в переменной $c и известен ее glob

пишем враппер:

*{$name}=sub { &$c };

но если функция представляет собой константную функцию (например 
константы в каком-то модуле вроде Errno) то получаем варнинг про
попытку переопределения константной функции

Constant subroutine ...

Я ковырялся в поисках директивы которая отменяет этот варнинг, но
не нашел варианта. Так же не нашел можно ли по ссылке на функцию определить
не константная ли она?

сейчас тупо перехватил варнинг 
$SIG{__WARN__}=sub { $is_constant=1 if $_[0]=~/^Constant sub/ };

и после переопределения если $is_constant установлено в true то
так вылавливаю константные ф-ции. хотелось бы от этого хака избавиться


VVP> On Mon, Dec 29, 2008 at 10:46 AM, Dmitry E. Oboukhov <unera на debian.org> wrote:
>> имеется некая функция, скажем foo.
>> 
>> как можно узнать из какого пакета данная функция?
>> 
--
... 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/c6638ff7/attachment.bin>


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