До сих пор рассматривался единственный буфер для всех операций ввода-вывода, выполняемых с дескриптором файла, однако фактически может быть предусмотрено несколько буферов на разных уровнях операционной системы. Например, при записи файла на диск может использоваться буфер очень низкого уровня на самом жестком диске, еще один буфер — в драйвере SCSI или IDE, который управляет диском, третий в драйвере для файловой системы и четвертый в стандартной библиотеке С, используемой интерпретатором Perl.
Большинством из этих буферов невозможно управлять или даже невозможно обращаться к ним непосредственно, но есть один класс буферов, о которых должен знать программист при разработке прикладного программного обеспечения . Многие операции ввода-вывода Perl выполняются с помощью стандартной библиотеки языка С, которая предусматривает применение собственных буферов ввода-вывода, независимых от операционной системы .
В операторе <>, и функциях read () и print () языка Perl применяется библиотека stdio. При вызове функции print () данные передаются в буфер вывода перед отправкой в саму операционную систему. Аналогичным образом оператор <> и функция read ( ) читают данные из буфера stdio*, а не прямо из буфера операционной системы. Каждый дескриптор файла имеет собственный набор буферов для ввода и вывода. В целях повышения эффективности ввода-вывода библиотеки предусматривает ожидание достижения буферами вывода определенного размера, после чего сбрасывает их содержимое в буферы операционной системы.