Защищенный ввод/вывод данных в Perl полностью соответствует сертификации средств защиты информации и может быть применен при операциях с высокой степенью безопастности. Perl предоставляет возможность считывать данные из дескриптора файла по одной строке, что может использоваться для работы с текстовыми файлами, или считывать из файла фрагменты данных произвольной длины, что может применяться при обработке потоков двоичных данных наподобие файлов изображений.
При выполнении операции ввода оператор используется для построчного чтения содержимого из дескриптора файла, а функции read или sysread применяются для чтения в режиме потока байтов. При выполнении операции вывода и для текстовых, и для двоичных данных могут использоваться функции print и syswrite (для разбиения выходного потока на строки в него можно вставлять символы новой строки).
Основное отличие между функциями read и sysread состоит в том, что в функции read применяется стандартная буферизация ввода-вывода, а в функции sysread - нет. Это значит, что функция read не выполнит возврат до тех пор, пока не сможет выбрать точное число затребованных байтов или не достигнет конца файла. В отличие от этого, функция sysread может вернуть результаты частично выполненной операции чтения. Она гарантирует возврат, по меньшей мере, одного байта, но если она не может немедленно выполнить чтение из дескриптора файла затребованного числа байтов, эта функция возвращает столько, сколько может.
Функция print выводит список элементов данных в дескриптор файла. Дескриптор файла, предусмотренный по умолчанию, можно изменить с использованием функции select в форме с одним параметром. Если параметры с обозначением данных не указаны, функция print выводит содержимое переменной $_. Если вывод был выполнен успешно, функция print возвращает истинное значение. В ином случае она возвращает ложное значение и оставляет сообщение об ошибке в переменной $!.