[Moscow.pm] экспорт/импорт

Dmitry E. Oboukhov unera на debian.org
Пн Дек 8 07:53:34 PST 2008


cat A.pm 
package A;

sub import { printf "import A: %s\n", join " ", @_; }

print "== A ==\n";
1;

забыл привести A.pm

впрочем из теста видно :)


Tmppo> apache:[~]$ cat AA.pm
Tmppo> package AA;
Tmppo> use A from => 'AA';
Tmppo> sub import { printf "import AA: %s\n", join " ", @_; }

Tmppo> print "== AA ==\n";
Tmppo> 1;
Tmppo> apache:[~]$ cat test.pl
Tmppo> use warnings;
Tmppo> use strict;
Tmppo> use A from => 'main';
Tmppo> use AA from => 'main';
Tmppo> print "main\n";

Tmppo> apache:[~]$ perl test.pl
Tmppo> == A ==
Tmppo> import A: A from main
Tmppo> import A: A from AA
Tmppo> == AA ==
Tmppo> import AA: AA from main
Tmppo> main

Tmppo> то есть в импорте имеем имя текущего модуля и параметры импорта.

Tmppo> А как узнать в этой функции ИЗ какого модуля нас экспортируют?

Tmppo> то есть чтобы нечто вроде сборщика статистики пишется, хочется
Tmppo> чтобы написали в модуле use blah;

Tmppo> и далее print blah->foos;

Tmppo> вывели перечень функций в ДАННОМ модуле.

Tmppo> соответственно для реализации такой возможности нужно в импортируемом
Tmppo> знать откуда нас импортируют

Tmppo> КАК?
Tmppo> --
Tmppo> ... mpd is off

Tmppo> . ''`.                               Dmitry E. Oboukhov
Tmppo> : :’  :   email: unera на debian.org jabber://UNera@uvw.ru
Tmppo> `. `~’              GPGKey: 1024D / F8E26537 2006-11-21
Tmppo> `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
--
... 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/20081208/2d8f3ad2/attachment.bin>


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