При использовании оператора <> в операторе проверки условия цикла while, можно исключить явную проверку с помощью функции defined. В результате этот цикл становится более удобным для восприятия. Эта конструкция работает правильно, даже если строка состоит из отдельного символа <> или является пустой (такие значения обычно рассматриваются интерпретатором Perl как ложные). При использовании оператора <> за пределами оператора проверки условия циклов while обязательно используйте функцию defined для проверки того, соответствует ли возвращаемое значение условию EOF.
И наконец, для явной проверки дескриптора файла на условие EOF может применяться функция eof. Функция eof () возвращает истинное значение, если при следующем чтении из дескриптора файла FILEHANDLE возникнет условие EOF. При вызове без параметров или круглых скобок, т.е. в форме eof, эта функция проверяет последний дескриптор файла, из которого было выполнено чтение.
При использовании конструкции whi1е(<>) для чтения файлов, указанных параметрами командной строки, в виде одного псевдофайла, функция eof имеет "магические” (не обусловленные синтаксической структурой). При вызове с пустыми круглыми скобками, в форме eof), эта функция возвращает истинное значение в конце самого последнего файла. При использовании без круглых скобок или параметров, в форме eof, функция возвращает истинное значение в конце каждого отдельного файла, указанного в командной строке.