Консультация № 65443
04.12.2006, 05:46
0.00 руб.
0 2 2
Ув. эксперты, делитесь знаниями!
Кто такой our?
Чем различаются переменные, объявленные с помощью our, my или просто присваиванием? Есть ли ещё какие-либо операторы вроде my и our?

Обсуждение

Неизвестный
04.12.2006, 09:57
общий
это ответ
Здравствуйте, Олег Владимирович!
our- оператор служащий для обозначения лексической области видимости переменной, а в часности - для об"явления глобальных переменных.
Помимо our для об"явления лексических областей видимости служат переменные my и local. my обявляет "закрытые" переменные, local- переменные с динамической областью видимости.
Более подробно читайте в документации, на офф. сайте, в литературе.
1.perldoc -f our
perldoc -f my
perldoc -f local
2. http://perldoc.perl.org/functions/our.html
http://perldoc.perl.org/functions/my.html
http://perldoc.perl.org/functions/local.html
3. " Программирование на Perl" Л. Уолл, Т. Кристиансен, Дж. Орвант (т.н. "Camel book". Не поленитесь приобрести его и там вы найдете практически ответы на все вопросы, связанные с Perl)
давно
Академик
20764
1861
04.12.2006, 12:22
общий
это ответ
Здравствуйте, Олег Владимирович!

ещё есть local

и если у вас используется use strict (что я вам очень рекомендую), вам придётся все используемые переменные объявлять с помощью local, our или my. Это конечно несколько неудобно, зато уберегает от опечаток и прочих глупостей.

Различаются они реализацией, впрочем она видима программно, но только если use strirt не используется.
local переменные - на самом деле глобальные, просто при входе в объект они переинициализируются, а при выходе их старое значение восстанавливается (если оно было). Это медленно, зато они доступны из других мест, например, из функций вызванных той, где эта local переменная объявлена.
my - это действительно локальная переменная, доступная только там, где она объявлена.
our - это вообще устаризм. для чего был введён - уже не помню. Похоже, что для объявления глобальных переменных - в каких-то версиях local и my вне функций были недопустимы.


Форма ответа