Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > изменение глобальной переменной из функции |
Автор: zorch 19.3.2006, 12:04 |
Есть большая прога, описывать ее здесь смысла нет, но суть в том что глабальная переменная изменяется в функции. Как это сделать? Для упрощения ввывожу простой кусок кода. $a=0; &test; &test1; sub test { $a=1;} sub test1{ print $a; } Выводится соответсвенно 0. А нужно чтобы выводилась 1, т.е. sub test должен ИЗМЕНЯТЬ переменную $a. Если кто знает как это сделать. подскажите. |
Автор: BlackLFL 19.3.2006, 12:50 | ||
Вы привели неправильный пример, если Вы его запустите, то получите не 0 как пишите, а 1 ...
|
Автор: sharq 20.3.2006, 16:43 |
zorch, используй свзяку our + local, our в основной программе, local в функциях. Подробно смотри perldoc -f our и perldoc -f local. ![]() |
Автор: Phoinix 23.3.2006, 12:51 | ||
BlackLFL, sharq, Мудрецы однако... zorch,
P.S. use vars ...; - как раз для глобальных переменных |
Автор: sharq 23.3.2006, 15:19 |
Phoinix, ты видел исходный код vars.pm? и что лучше our+local или один экран кода vars? ![]() |
Автор: sharq 25.3.2006, 16:10 |
Phoinix, в принципе ты прав! Просто и так, и так можно, твой вариант короче. Это из области - при наследовании писать use base '...';, а не use ...; push @ISA, '...';. Хотя и так, и так можно, просто первый вариант короче! ![]() ![]() |
Автор: Kiber_rat 25.3.2006, 21:32 | ||
|
Автор: sharq 26.3.2006, 15:04 | ||
Kiber_rat, а зачем писать слово main? Можно так:
![]() |