Автор Тема: Передача переменных процедуре  (Прочитано 3754 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Передача переменных процедуре
« : 03 Августа 2004, 20:29:21 »
Возникла такая проблема:

передаю процедуре переменные:

&my_sub($var1,$var2,$var3);

Получаю в процедуре в массиве
@_ = ($var1,$var2,$var3)

но если я опускаю какую либо переменную, то количество элементов массива уменьшается:

&my_sub($var1,,$var3);
@_ = ($var1,$var3)

т.е. промежуток между запятыми должен быть хоть чем-то заполнен:

&my_sub($var1,\'\',$var3);
@_ = ($var1,\'\',$var3)

Но есть ли возможность не заполнять этот промежуток? но при этом получать "правильный" массив?

Оффлайн ---===STINGER===---

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 45
  • +0/-0
  • 0
    • Просмотр профиля
    • http://huk.ru
Передача переменных процедуре
« Ответ #1 : 04 Августа 2004, 00:03:06 »
попробуй отправить в функцию пустую переменную .. тогда получишь что ты хочешь -  если я тебя правильно понял. На мой взгляд это самый простой способ!
Когда не достигают желаемого, делают вид, что желали достигнутого.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Передача переменных процедуре
« Ответ #2 : 04 Августа 2004, 12:28:01 »
или ещё можно вот так &my_sub($var1,undef,$var3);
Приветик. ;)
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Передача переменных процедуре
« Ответ #3 : 05 Августа 2004, 10:09:47 »
---===STINGER===---
Цитировать
отправить в функцию пустую переменную


AnnA
Цитировать
&my_sub($var1,undef,$var3);


Вопрос в том, что мне вообще ничего не хочется отправлять, просто, хотелось установкой нескольких запятых определить переменные по порядку в массиве...

Вообщем это не так важно, я пошел по другому пути... делов в том, что я передавал в процедуру четыре переменные, первая обязательная, из остальных трех должна присутствовать только одна, а остальные вычислялись на основе неё в процедуре, я просто добавил еще 3 процедуры в которые передаю соответствующую переменную, вычисляю остальные и передаю в основную процедуру...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Передача переменных процедуре
« Ответ #4 : 05 Августа 2004, 23:12:40 »
кинь переменные в хеш и передавай процедуре ссылку на него. Вариант не быстрый, но для ленивых сойдет, да и универсальный

%goga = ( \'var1\'=>$var1, \'var2\' =>$var2, \'var3\'=>$var3);
&my_sub(\\%goga);

sub my_sub {
my $ref_hash=shift;
map { print "$_ : $ref_hash->{$_}\\n" }  keys %{$ref_hash};
}
 в исканиях.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Передача переменных процедуре
« Ответ #5 : 06 Августа 2004, 16:11:33 »
Green Kakadu
Нет все-таки решил не передавать пустые значания, что бы потом в процедуре не разбирать какие переменные есть а каких нет, да еще и найдется умник, который попытается передать вместо "одной из трех", две или три переменные, потом проверять их на соответсвие друг другу, а ясли соответствия нет, что выбирать наиболее понравившуюся переменную... :)

IMHO лучше не заострять премя на проверку, а просто получить и обработать...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28