На этом шаге мы рассмотрим второй случай использования функции local().
На этом шаге рассмотрим второй случай.
В следующем примере функция local() используется для создания локального дескриптора файла внутри блока операторов.
#! perl -w
open(FILEHANDLE,">b");
print FILEHANDLE "Новая строка в файл 'b'\n";
{
local *FILEHANDLE;
open(FILEHANDLE, ">bb");
print FILEHANDLE "Новая строка в файл 'bb'\n";
close FILEHANDLE;
}
{
local *FILEHANDLE;
open (FILEHANDLE, ">bbb");
print FILEHANDLE "Новая строка в файл 'bbb'\n";
close FILEHANDLE;
}
print FILEHANDLE "Еще одна строка в файл 'b'\n";
close FILEHANDLE;
В результате выполнения данного сценария в текущем каталоге будут созданы файлы:
"b": Новая строка в файл 'b' Еще одна строка в файл 'b' "bb" : Новая строка в файл 'bb' "bbb": Новая строка в файл 'bbb'
Заметьте, что во время выполнения операций с файлами "bb" и "bbb" файл "b" остается открытым.
Аналогичным образом может быть определено локальное имя для функции.
#! perl -w # функция 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"; }
Результаты выполнения приведены на рисунке 1.
Рис.1. Результаты работы примера
На следующем шаге мы закончим изучение этого вопроса.