[Moscow.pm] функция не из нашего пакета
Dmitry E. Oboukhov
unera на debian.org
Пн Дек 29 01:53:43 PST 2008
On 12:51 Mon 29 Dec , Alexander Lourier wrote:
AL> On Monday 29 December 2008 12:37:44 Vladimir V. Perepelitsa wrote:
>> &App::foo и &main::foo это ссылки на одну и ту-же функцию.
>> так что выяснить что является настоящим именем, а что алиасом -
>> неоднозначно. можно к примеру пройтись рекурсивно по всем неймспейсам и
>> найти все имена по равенству ссылок.
AL> Тоже хотел так ответить сначала. А потом подумал, что caller каким-то макаром
AL> догадывается о настоящем имени.
это caller вызваный ИЗНУТРИ функции.
там можно и просто тупо __PACKAGE__ или даже __FILE__ юзать.
а надо снаружи функции эту же задачу решить
AL> ==
AL> package Ap;
AL> use base 'Exporter';
AL> our @EXPORT=qw(foo);
AL> sub foo
AL> {
AL> my @caller = caller(0);
AL> use Data::Dumper;
AL> print STDERR Dumper(\@caller);
AL> return 'blah';
AL> }
AL> package main;
Ap->> import();
AL> sub foo1
AL> {
AL> return 'blah2';
AL> }
AL> foo();
AL> ==
AL> Выдает:
AL> ~$ perl a.pl
AL> $VAR1 = [
AL> 'main',
AL> 'a.pl',
AL> 25,
AL> 'Ap::foo',
AL> 1,
AL> 0,
AL> undef,
AL> undef,
AL> 256,
AL> '',
AL> undef
AL> ];
>>> имеется некая функция, скажем 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/03bc5e72/attachment.bin>
Подробная информация о списке рассылки Moscow-pm