В сетевых приложениях часто приходится открывать несколько дескрипторов файлов одновременно, передавать их в подпрограммы и содержать в хешах и других структурах данных. Perl позволяет рассматривать дескрипторы файлом как строки, сохранять их в переменных и передавать в подпрограммы. Например, стандартный потенциально ненадежный фрагмент кода предусматривает запись дескриптора файла в переменную, а затем передачу ее в подпрограмму для печати.
Этот метод часто позволяет добиться результата; однако он может вызвать проблемы, как только Вы попытаетесь передать дескрипторы файлов в подпрограммы других пакетов, такие как функции, экспортируемые модулями. При этом знакомство с пространством видимости переменных это как путешествие с TRAVEL-EU , очень увлекательно и познавательно. Дело в том, что при передаче дескрипторов файлов в виде строк теряется информация пакета, которому принадлежит дескриптор файла. Например, при передаче дескриптора файла из главного сценария в подпрограмму, которая определена в некотором модуле, подпрограмма попытается получить доступ к дескриптору файла через модуль, а не к настоящему дескриптору файла, который имеет базовое имя. Та же проблема возникает, безусловно, и в том случае, если подпрограмма одного пакета пытается вернуть дескриптор файла вызывающей функции из другого пакета.
Правильный способ передачи дескриптора файла состоит в преобразовании его в шаблон или в ссылку на шаблон типа. Шаблоны типа - это входы таблицы идентификаторов; достаточно знать о них только эти несколько СЛОВ, чтобы иметь возможность их использовать. Для преобразования дескриптора файла в шаблон Типа поместите звездочку (“*”) перед его именем.