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

Alexander Lourier aml на rulezz.ru
Пн Дек 29 01:51:02 PST 2008


On Monday 29 December 2008 12:37:44 Vladimir V. Perepelitsa wrote:

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

Тоже хотел так ответить сначала. А потом подумал, что caller каким-то макаром 
догадывается о настоящем имени.

==
package Ap;

use base 'Exporter';
our @EXPORT=qw(foo);

sub foo
{
        my @caller = caller(0);

        use Data::Dumper;
        print STDERR Dumper(\@caller);

        return 'blah';
}

package main;

Ap->import();

sub foo1
{
        return 'blah2';
}

foo();
==

Выдает:

~$ perl a.pl
$VAR1 = [
          'main',
          'a.pl',
          25,
          'Ap::foo',
          1,
          0,
          undef,
          undef,
          256,
          '',
          undef
        ];


> > имеется некая функция, скажем foo.
> >
> > как можно узнать из какого пакета данная функция?




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