| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Подключение sub |
| Автор: AlexanderI 13.2.2006, 21:43 | ||
| почему когда подключается sub, то переменные которые находятся в sub равняются нулю ? Когда вставляеш sub user_set {...} в if ($proverka eq "ok") { сюда }, то всё работает нормально. Можно ли как-нибудь это победить ? Вот мой код:
|
| Автор: korob2001 13.2.2006, 22:17 |
| Переменные объявленные внутри блока как my, будут видны только внутри этого блока, но не из вне. Эти переменные, с лексической областью видимости, живы только до завершения блока, в ктором они были объявлены. Можно конечно возвращать ссылку на эту переменную, тогда она будет жить до завершения программы, а не блока. Но лучше объяви их в пространстве имён пакета. |
| Автор: BlackLFL 13.2.2006, 22:36 | ||
|
| Автор: nitr 14.2.2006, 00:18 |
| Думаю, если тебе так нужен этот sub то передай ему ссылку на твой хеш. |
| Автор: AlexanderI 14.2.2006, 00:21 |
| А как это сделать ? Пример кода не подскажешь (никогда такое не делал) ? |
| Автор: BlackLFL 14.2.2006, 00:34 | ||
|
| Автор: nitr 14.2.2006, 01:10 | ||
|
| Автор: AlexanderI 14.2.2006, 13:24 |
| А не легче просто писать без my. Т.е. не так: my $usr2 = $log2->fetchrow_hashref(); а вот так: $usr2 = $log2->fetchrow_hashref(); Какие-нибудь плохие последствия возможны ? |
| Автор: BlackLFL 14.2.2006, 13:28 |
| если Вы хотите освоить азы програмирования (и хороший тон), придеться понять, что такое my, local, our! Perl дает возможность не использовать их в простых програмах, в C++ с первого дня, знали бы, что это такое! |
| Автор: nitr 14.2.2006, 14:08 |
| AlexanderI, а что сложности чтоль? Вроде точно должно работать, если какие проблемы, пиши, постараюсь помочь, да и BlackLFL поможет |
| Автор: Kannabismus 15.2.2006, 00:48 | ||
AlexanderI, попробуйте заставить свои функции не просто выполнять код, а обрабатывать входные данные и отдавать на их основе результат. Вот как следует делать в Вашем случае:
Видите разницу? А процедурное программирование оставим программистам на BASIC. |
| Автор: tishaishii 15.2.2006, 02:42 | ||||||
| Да что вы заладили, "$user->login('login')", ну не работает так. Работает вот так:
А ещё работает вот так:
Ну ещё так:
|
| Автор: nitr 15.2.2006, 18:48 |
| Всё прекрасно работает и мой и до меня... |
| Автор: BlackLFL 16.2.2006, 10:39 | ||
| nitr, не обращай внимания. tishaishii, давай будем писать hello word так
|
| Автор: nitr 16.2.2006, 12:22 |
| BlackLFL, =) |