Дескрипторы файлов являются основой сетевых приложений и подключают сценарий Perl к внешнему миру. При чтении из дескриптора файла, в программу поступают данные извне, а при записи в него программа выдает обработанные в ней данные. В зависимости от способа создания, дескриптор файла может быть подключен к файлу на диске, к аппаратному устройству, такому как последовательный порт, к локальному процессу, такому как окно интерпретатора командной строки в системе управления окнами, или к удаленному процессу, например сетевому серверу. Дескриптор файла может быть также подключен к устройству, которое в шутку называют “битоприемником” (bit bucket), принимающем и затем отбрасывающему данные.
Дескриптор файла — это любой допустимый идентификатор Perl, который состоит из прописных и строчных букв, цифр и символов подчеркивания. В отличие от других переменных, дескриптор файла не имеет отличительного префикса (подобного “$”). Поэтому, чтобы подчеркнуть эту особенность, программисты Perl часто записывают их прописными буквами.
При запуске сценария Perl по умолчанию открываются ровно три дескриптора файла: STDOUT, STDIN и STDERR. Дескриптор файла STDOUT (сокращение от standard output) применяется по умолчанию для вывода. Данные, отправленные в этот дескриптор файла, появляются на предпочтительном устройстве вывода пользователя, обычно в окне интерпретатора командной строки, из которого был запущен сценарий. Дескриптор файла STDIN (сокращение от standard input) применяется по умолчанию для ввода. Данные, считанные из этого дескриптора файла, поступают из предпочтительного устройства ввода пользователя, обычно с клавиатуры. Дескриптор файла STDERR (сокращение от standard error output) используется для вывода сообщений об ошибках, диагностических сообщений, отладочных сообщений и другого подобного вспомогательного вывода. По умолчанию для STDERR применяется то же устройство вывода, что и для STDQUT, но это назначение можно изменить по усмотрению пользователя. В основе применения отдельных дескрипторов файлов для обычного и вспомогательного вывода лежит стремление предоставить пользователю возможность управлять этими потоками вывода независимо, например, направлять обычный вывод в файл, а вывод сообщений об ошибках на экран.