Листинг 9.8 Создание локального псевдонима функции
#!/usr/bin/perl
# функция NumberOfArgs( ) возвращает число своих параметров
sub NumberOfArgs {
return $#_ + 1;
}
print "NumberOfArgs: число параметров = ", NumberOfArgs(1,2,3,4), "\n";
{
local *Numbers = *NumberOfArgs;
print "Numbers: число параметров = ", Numbers(1,2,3), "\n";
}
{
local *N = \&NumberOfArgs;
print "N: число параметров = ", N(1,2), "\n";
}
Результат выполнения:
NumberOfArgs: число параметров = 4
Numbers: число параметров = 3
N: число параметров = 2
Временное изменение элемента массива или хэш-массива
В примере из листинга 9.9 внутри блока операторов временно изменяется значение одного элемента
глобального хэш-массива %ENV, содержащего значение переменной $PATH, входящей в состав среды
интерпретатора UNIX shell.
Листинг 9.9. Временное изменение элемента хэш-массива
#!/usr/bin/perl
print "значение переменной среды \$PATH:\n$ENV{PATH}\n";
{
local $ENV{PATH} = "/home/mike/bin";
print "временное значение переменной среды \$PATH: $ENV{PATH}\n";
}
print "прежнее значение переменной среды \$PATH:\n$ENV{PATH}\n";
Результат будет выведен в следующем виде:
значение переменной среды $PATH:
/sbin:/usr/sbin:/usr/bin:/usr/local/bin
временное значение переменной среды $PATH: /home/mike/bin
прежнее значение переменной среды $PATH:
/sbin:/usr/sbin:/usr/bin:/usr/local/bin