S3.Blog

24 Июня 2017
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Специальная переменная Perl _

Дата последнего изменения: 15 Апреля 2011
Метки статьи: Документация, Perl
Недавно узнал о существовании специальной переменной Perl, которая называется "_". Да-да, это именно "_", а не $_.
 

Узнал от своего начальника и заядлого перловика о ней. Полез и почитал сам. Оказалось, что это не совсем переменная. Это дескриптор файла, что развеивает магию вокруг переменной без префикса "$".

Так что же делает этот дескриптор и откуда берется?

Рассмотрим код:
if(-e "./path2/file.dat")    {
    if(-z _)    {
        print "OK";
    }
}

Сначала мы проверяем файл на существование. Но потом мы проверяем _ на предмет пустоты.

Дело в том, что для получения атрибутов команды -e, -d, -z и подобные неявно вызывают функцию stat для файла. И просто возвращают один из элементов результирующего массива. (Ведь мы помним, что функция stat возвращает массив)

Затем происходит кеширование результатов изъятия атрибутов для дескриптора файла _. И когда мы вызываем новую проверку атрибута файла для _, функция stat уже не вызывается, что несколько экономит время и ресурсы, да.

Вот такая небольшая хитрость.

------
Взято отсюда: Специальная переменная Perl _ - Блог SHAman'a



 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.