Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать кто вызвал ф-цию, Узнать кто вызвал ф-цию 
:(
    Опции темы
alexey9
  Дата 28.3.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



Добрый вечер.

Подскажите как узнать кто вызвал ф-цию, точнее метод класса, реально ли вообще это сделать?
Поясню:
Код

 package ClassA;
 use ClassB;

 sub new {
  ...
   $self->{workClass_ptr};
  ...
 }

 sub init() {
   my $self = shift;
   $self->{workClass_ptr} = new ClassB($self);
   $self->{workClass_ptr}->doWork();
 }


Код

 package ClassB;
 sub new {
  ...
   $self->{backref_ptr} = shift;
  ...
 }

sub doWork {
  my $self = shift;
  my $caller; // вот тут хочется что бы в caller лежало имя того кто вызвал метод ну или имя класса/package из которого был вызван метод.

  print "Caller is ".$caller;
 
 return 1;
}


Заранее спасибо.
PM MAIL   Вверх
JAPH
Дата 28.3.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 3
Всего: 23



Вы заметили, что caller подсвечивается? smile Это встроенная функция perl. Так что perldoc -f caller. smile smile
(caller)[0] даст имя пакета, из которого была вызвана подпрограмма.
(caller(1))[3] даст полное имя процедуры, вызвавшей данную подпрограмму.


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.