информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаВсе любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
то есть в каждой из двух первых подпрограмм давать... 19.02.05 02:12  Число просмотров: 1658
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 19.02.05 02:27  Количество правок: 2
<"чистая" ссылка>
> Не совсем компетентен в данном вопросе, но попробую помочь.
> А если из подпрограммы какой-нибудь флаг (переменнную)
> передавать?
то есть в каждой из двух первых подпрограмм давать переменной определенное значение, а в третьей проверять это значение? если да, то мне нужно что-нибудь более изящное ;)
<programming>
[Perl] Работа с подпрограммами 18.02.05 13:35  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
В моём скрипте из двух разных подпрограмм в определенных случаях вызывается третья. Можно ли каким-то образом узнать, из какой именно подпрограммы была вызвана эта подпрограмма?
[Perl] Дык передавай отдельным параметром, откуда тебя вызвали 18.02.05 16:17  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Не совсем компетентен в данном вопросе, но попробую помочь. 18.02.05 16:10  
Автор: dr Tr0jan Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Не совсем компетентен в данном вопросе, но попробую помочь.
А если из подпрограммы какой-нибудь флаг (переменнную) передавать?
то есть в каждой из двух первых подпрограмм давать... 19.02.05 02:12  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
Отредактировано 19.02.05 02:27  Количество правок: 2
<"чистая" ссылка>
> Не совсем компетентен в данном вопросе, но попробую помочь.
> А если из подпрограммы какой-нибудь флаг (переменнную)
> передавать?
то есть в каждой из двух первых подпрограмм давать переменной определенное значение, а в третьей проверять это значение? если да, то мне нужно что-нибудь более изящное ;)
а чем этот способ не нравится? 19.02.05 08:09  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
просто при вызове подпрограммы прописывай ещё один параметр:

sub xxx {
...
#имя вызывающей подпрограммы
#лежит в переменной $_[$#_]
...
}

sub sub1 {
....
&xxx(...,'sub1');
....
}

sub sub2 {
....
&xxx(...,'sub2');
....
}

Это, насколько мне известно, единственный вариант.
да я не сказал, что он мне не нравится ;) 19.02.05 09:17  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
да я не сказал, что он мне не нравится ;)
просто, во-первых, немного запутался - я перепутал присваивание значение переменной с передачей параметра подпрограмме.
а во-вторых, наедялся, что найдется другой способ, ведь девиз Perl'a "There's more than one way to do it" ;)
спасибо за помощь! ;)
можно пять копеек? 22.02.05 00:05  
Автор: whiletrue <Роман> Статус: Elderman
Отредактировано 22.02.05 00:12  Количество правок: 1
<"чистая" ссылка>
> да я не сказал, что он мне не нравится ;)
> просто, во-первых, немного запутался - я перепутал
> присваивание значение переменной с передачей параметра
> подпрограмме.
> а во-вторых, наедялся, что найдется другой способ, ведь
> девиз Perl'a "There's more than one way to do it" ;)
> спасибо за помощь! ;)

Твоя же процедура должна вести себя по-разному, взависимости от чего-то. В твоем случае от того откуда она вызвана. Чем это не ее параметр? Однако, предлагаю чуть побольше абстрагирваться, т.е. пусть этот параметр означает не то из какой процедуры она вызвана, а то в чем различия в функциональности. Напрмер: "Печатать в STDOUT или в STDERR", "Выводить варнинги или нет", "Прибавлять счетчик или нет" и т.д. А то вдруг тебе понадобится ее еще в третьей процедуре использовать - тогда придется ее переписывать...
в "во-первых" как раз и приведен альтернативный (собственный), но менее удачный способ :-) 21.02.05 19:43  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
Не понял... Всмысле? А есть другие варианты? Если только объекты прикрутить, но это ещё менее удачно, имхо. 21.02.05 21:45  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
другой вариант уже был упомянут самим n0xi0uzz 21.02.05 22:03  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
Выше предлагали передавать парметр в процедуру, а n0xi0uzz понял, что признак вызывающего предложено передавать через переменную (глобальную).
Это и есть альтернативный способ, на существование которого намекал n0xi0uzz, но передача параметром выглядит явно лучше.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach