Недопустимые файловые дескрипторы

В действительности Perl не может открыть файл своими силами. Он, как и другие языки программирования, всего лишь обращается к операционной системе с запросом на открытие файла. Конечно, операционная система может отказать изQза разрешений доступа, неверного имени файла или по другим причинам. Попытавшись прочитать данные из недопустимого файлового дескриптора (т. е. из файлового дескриптора, который не был открыт положенным образом), вы немедленно получите признак конца файла. (Для механизмов ввода/вывода, представленных в этой главе, конец файла обозначается undef в скалярном контексте или пустым списком в списочном контексте.) Если вы попытаетесь записать данные в недопустимый файловый дескриптор, эти данные просто пропадут. К счастью, всех этих неприятных последствий легко избежать. Прежде всего, при включенном режиме предупреждений ключом –w или директивой use warnings Perl подскажет, если мы используем недопустимый дескриптор. Но даже до этого open всегда сообщает, успешно ли завершился вызов, возвращая true в случае успеха или false в случае неудачи. Это позволяет применять конструкции следующего вида:

my $success = open LOG, ">>logfile"; # Сохранение возвращаемого значения
if ( ! $success) {
# Вызов open завершился неудачей
...
}

Да, так поступить можно. Но существует и другой способ, который будет рассмотрен в следующем разделе.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Аргументы вызова
Ввод данных оператором <>
Вывод функцией say
Закрытие файлового дескриптора
Запись данных в стандартный вывод

Вернуться в раздел: Perl / 4. Ввод и вывод