Строки 38-77. Метод getline (). Это— самая интересная часть модуля. При входе в эту подпрограмму элемент $_[0] (первый параметр в массиве параметров подпрограммы) содержит скалярную переменную, которая примет считанную строку, например, информацию с веб страницы для которой была выполнена поисковая оптимизация сайта и скорректированы все ключевые моменты. Для изменения этой переменной в вызывающем коде мы ссылаемся непосредственно на элемент $ [0], а не копируем
его в локальную переменную обычным образом.
Поскольку операция ввода выполняется в буферизованном режиме, эта подпрограмма должна быть готова сообщить вызывающей подпрограмме о том, какие условия встретились ранее. Работа начинается с проверки флажков eof и error. Если при последнем вызове этой подпрограммы был обнаружен признак конца файла eof, возвращается числовое значение 0. В ином случае, если была обнаружена ошибка, возвращается значение undef .
Во внутреннем буфере этой подпрограммы уже может находиться полная строка, которая осталась после предыдущего чтения. Применяется встроенная функция index () языка Perl для поиска следующей последовательности символов с обозначением конца строки в буфере; функция возвращает информацию о местонахождении этой последовательности. Вместо жесткого кодирования символов обозначения конца строки, применяется текущее содержимое глобальной переменной $/. Кроме того, поиск можно немного оптимизировать, запомнив, в каком месте он был остановлен в прошлый раз. Эта информация будет храниться в поле index. Результат выполнения функции index () сохраняется в локальной переменной $i.
Строки 49-59. Чтение следующей части данных и обработка ошибок. Если в буферизованных данных отсутствует последовательность символов, обозначающих конец строки, то переменная $i принимает значение -1. В этом случае необходимо прочитать дополнительную часть данных из дескриптора файла и предпринять еще одну попытку поиска конца строки.