На этом шаге мы рассмотрим использование функции local().
Функция local() также используется для объявления и инициализации переменных:
local EXPR; local ($myvar, @mylist, %myhash); local $pi = 3.14159; local ($pi, $exp) = (3.14159, 2.71828);
Функция my() является относительно новой, она появилась в версии Perl 5. Для создания действительно локальных переменных рекомендуется использовать именно функцию my(), а не функцию local(). Впрочем, есть несколько исключений.
В следующем примере показано, чем отличаются переменные, объявленные при помощи функций my() и local ().
#! perl -w
sub f1
{
local ($x) = "aaaa";
my($y) = "bbbb";
print("f1: x = $x\n");
print("f2: y = $y\n\n");
f2();
print("f1: x = $x\n");
print("f1: y = $y\n\n");
}
sub f2
{
print("f2: x = $x\n");
print("f2: y = $y\n\n");
$x = "сссс";
$y = "dddd";
print("f2: x = $x\n");
print("f2: y = $y\n\n");
}
f1;
Результат его работы приведен на рисунке 1.
Рис.1. Результат работы приложения
Как видно из приведенного результата, функция f2() не имеет доступа к переменной $у, объявленной при помощи функции my() внутри функции f1(), и, напротив, имеет доступ к переменной $х, объявленной внутри f1() при помощи функции local() .
Со следующего шага мы начнем знакомиться с передачей параметров.