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 <[email protected]>
wrote:
>> имеется некая функция, скажем foo.
>>
>> как можно узнать из какого пакета данная функция?
>>
--
... 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
