• Иллюстрированный самоучитель по Perl

    Локальные переменные в подпрограммах

    Областью видимости или областью действия переменной мы будем называть часть программы, где данная переменная может быть использована. В языке Perl, как мы знаем, нет обязательного явного описания переменных. Точкой определения переменной является место, где она впервые встречается в программе. Область действия большинства переменных ограничена пакетом. Исключение составляют некоторые специальные предопределенные глобальные переменные интерпретатора perl.

    Пакет – это механизм, позволяющий создать свое пространство имен для некоторого отрезка программы (этот отрезок может включать всю программу). Каждый фрагмент кода Perl-программы относится к соответствующему пакету.

    (Пакеты рассматриваются в части 12, а специальные переменные – в части 14)

    Таким образом, переменная, впервые встретившаяся – в некоторой подпрограмме, становится доступной во всем пакете, к которому эта подпрограмма принадлежит. Любая переменная в Perl по умолчанию считается глобальной, но эта глобальность ограничена рамками пакета. Иногда бывает необходимо ограничить область действия переменной рамками подпрограммы или блока, в которых она определена. Такие переменные называются локальными. В языке Perl существуют два способа описания локальных переменных – при помощи функций my() и local ().

    Функция mу()

    Функция mу() используется для объявления одной или нескольких переменных локальными:

    my EXPR
    

    …и ограничивает их область действия:

    • подпрограммой;
    • заключенным в фигурные скобки блоком операторов;
    • выражением, переданным на выполнение функции eval ();
    • файлом, в зависимости от того, в каком месте вызвана для объявления переменных сама функция my ().

    Если выражение EXPR содержит список переменных, то он должен быть заключен в скобки:

    my ($myvar, @mylist, %myhash);
    

    Одновременно с объявлением переменные могут быть инициализированы:

    my $pi = 3.14159;
    
    mу ($pi, $exp) = (3.14159, 2.71828);
    

    Переменные, объявленные при помощи функции ту (), доступны в своей области действия только для подпрограмм, определенных в этой области. Для подпрограмм, определенных за ее пределами, они недоступны. Такие переменные называют лексическими, а саму область видимости – лексической или статической областью видимости.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.