![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| AlexanderI |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.7.2004 Репутация: 2 Всего: 3 |
почему когда подключается sub, то переменные которые находятся в sub равняются нулю ?
Когда вставляеш sub user_set {...} в if ($proverka eq "ok") { сюда }, то всё работает нормально. Можно ли как-нибудь это победить ? Вот мой код:
--------------------
Магазин детских игрушек | Авто ВАЗ |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Переменные объявленные внутри блока как my, будут видны только внутри этого блока, но не из вне. Эти переменные, с лексической областью видимости, живы только до завершения блока, в ктором они были объявлены. Можно конечно возвращать ссылку на эту переменную, тогда она будет жить до завершения программы, а не блока. Но лучше объяви их в пространстве имён пакета.
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
Это сообщение отредактировал(а) BlackLFL - 13.2.2006, 22:36 |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Думаю, если тебе так нужен этот sub то передай ему ссылку на твой хеш.
|
|||
|
||||
| AlexanderI |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.7.2004 Репутация: 2 Всего: 3 |
А как это сделать ? Пример кода не подскажешь (никогда такое не делал) ?
--------------------
Магазин детских игрушек | Авто ВАЗ |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
Это сообщение отредактировал(а) BlackLFL - 14.2.2006, 00:35 |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
|
|||
|
||||
| AlexanderI |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.7.2004 Репутация: 2 Всего: 3 |
А не легче просто писать без my. Т.е. не так:
my $usr2 = $log2->fetchrow_hashref(); а вот так: $usr2 = $log2->fetchrow_hashref(); Какие-нибудь плохие последствия возможны ? --------------------
Магазин детских игрушек | Авто ВАЗ |
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
если Вы хотите освоить азы програмирования (и хороший тон), придеться понять, что такое my, local, our!
Perl дает возможность не использовать их в простых програмах, в C++ с первого дня, знали бы, что это такое! |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
AlexanderI, а что сложности чтоль? Вроде точно должно работать, если какие проблемы, пиши, постараюсь помочь, да и BlackLFL поможет
|
|||
|
||||
| sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
конечно же легче - писать на два символа меньше. Попробуй во всех своих скриптах использовать
Тогда поймешь что к чему. perldoc -f my perldoc -f our perldoc -f local perldoc strict -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
| Kannabismus |
|
|||
|
Тим Тоуди Профиль Группа: Участник Сообщений: 45 Регистрация: 20.11.2005 Репутация: 1 Всего: 2 |
AlexanderI, попробуйте заставить свои функции не просто выполнять код, а обрабатывать входные данные и отдавать на их основе результат. Вот как следует делать в Вашем случае:
Видите разницу? А процедурное программирование оставим программистам на BASIC. |
|||
|
||||
| tishaishii |
|
||||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Да что вы заладили, "$user->login('login')", ну не работает так.
Работает вот так:
А ещё работает вот так:
Ну ещё так:
|
||||||
|
|||||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Всё прекрасно работает и мой и до меня...
|
|||
|
||||
| BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
nitr, не обращай внимания.
tishaishii, давай будем писать hello word так
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |