Обычно наличие буферизации stdio не составляет проблемы, но при выполнении операций ввода-вывода более сложного типа, таких как сетевые операции, могут возникать затруднения. Рассмотрим общий случай, в котором приложение должно передать большой объем данных на удаленный сервер, подождать ответа, а затем отправить следующие данные. Программист может считать, что данные уже были отправлены, но фактически этого иногда не происходит. Выходные данные могут все еще оставаться в локальном буфере stdio, ожидая поступления дополнительных данных, после чего должен быть выполнен сброс буфера. Удаленный сервер так и не получит данные поэтому не вернет ответ. Программа не получит ответ и поэтому никогда не отправит данные.
В отличие от этого, буферизация низкого уровня, выполняемая операционной системой, не обладает таким свойством. Операционная система всегда пытается получить все данные, находящиеся в ее буферах вывода, как только аппаратные средства будут готовы их принять.
Для обхода буферизации stdio могут применяться следующие два метода. Один из них состоит во включении режима автоматического сброса для дескриптора файла. После активации этого режима интерпретатор Perl сообщает функциям библиотеки stdio, что сброс буфера дескриптора файла должен выполняться после каждого вызова функции print () . Для включения режима автоматического сброса должно быть установлено истиное значение специальной переменной $|.