[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