Дескрипторы файлов


Следующий: Больше магии от Up: Базовый ввод / вывод Предыдущая: печать

& NBSP содержание
До сих пор мы видели, как легко манипулировать стандартным потоком ввода или файлами, названными в командной строке. Часто бывает невозможно узнать имена файлов, которые вы хотите открыть при вызове вашей программы, или необходимо печатать в файл, а не на стандартный вывод. Чтобы сделать это в perl, необходимо получить дескриптор файла, который является специальной переменной, распознаваемой функциями и операторами ввода / вывода perl. Файловые дескрипторы необычны тем, что им не предшествует специальный символ, но они также не похожи на обычные голые слова. По этой причине некоторые люди предпочитают использовать другой подход к работе с файловыми дескрипторами, описанный в разделе & NBSP   содержание   До сих пор мы видели, как легко манипулировать стандартным потоком ввода или файлами, названными в командной строке , Сначала мы рассмотрим более традиционное использование файловых дескрипторов.

Чтобы создать дескриптор файла, вызовите команду open, указав дескриптор файла в качестве первого аргумента, и строку символов или переменную, содержащую имя файла, который вы хотите открыть. Хотя вы можете использовать любое имя для файлового дескриптора, многие программисты Perl используют имена, состоящие полностью из заглавных букв для файловых дескрипторов, чтобы помочь отличить их от других голых слов, содержащихся в программе, и в качестве визуального напоминания о том, что файловые дескрипторы отличаются от других переменных в perl.

По умолчанию perl открывает файлы для чтения. Специальные символы, как показано в таблице По умолчанию perl открывает файлы для чтения , может использоваться для различения между открытием файлов для чтения или записи или между записью в файл или из файла и записью в канал или из него. (Канал читает или пишет в или из другой программы вместо файла или из него.)

Таблица:

Аргументы для открытия Аргумент для открытия Значение "> имя файла " Открыть имя файла для записи "< имя файла " Открыть имя файла для чтения ">> Имя файла " Открыть имя файла для добавления "+ < имя файла " Открыть имя файла для чтения и записи "| Программа " Предоставить вход для программы " программа |" Получить вход из программы

При использовании функции open важно помнить, что не каждый запрос на открытие дескриптора файла гарантированно будет успешным. Если файл не существует, вы не можете открыть его для чтения. Точно так же, если программа не существует, вы не можете передавать данные в нее или из нее. В операционных системах, которые поддерживают понятие разрешений, файл может существовать, но вам может быть запрещено читать или записывать в него. По этим причинам функция open возвращает значение 1, если оно прошло успешно, и значение undef, если это не удалось. Это приводит к одной из наиболее распространенных конструкций программирования на Perl, иллюстрируемой следующим примером:

open (FI, "<$ myfile") || die («Не удалось открыть $ myfile»); Проверка возвращаемого значения открытия важна, потому что оператор diamond будет возвращать undef, когда он работает с дескриптором файла со значением undef, без каких-либо других предупреждений. Если вы изучите код большинства опытных программистов на Perl, вы обнаружите, что каждый вызов open имеет соответствующий вызов die, как в примере выше. Функция die просто печатает предоставленное вами сообщение вместе с номером строки, на которой оно произошло, и затем завершает программу. Аналогичная функция под названием warn печатает сообщение без завершения программы.

В таких системах, как Windows, которые различают текстовые и двоичные файлы, вы должны явно сообщить Perl после открытия файла, который вы собираетесь читать или записать в двоичном виде, передав соответствующий дескриптор файла в функцию binfile.

Функция close может быть вызвана с одним аргументом, представляющим дескриптор файла, который вы хотите закрыть. Как и большинство программ, perl автоматически закрывает файлы после завершения программы, поэтому обычно нет необходимости явно закрывать файлы в ваших программах perl. Кроме того, если вы открываете несколько файлов, используя один и тот же файловый дескриптор, Perl закроет ранее открытый файл, прежде чем открывать другой. Однако, если вы открываете много файлов с разными дескрипторами файлов, вы можете превысить лимит операционной системы для открытых файлов, поэтому в некоторых случаях вам может потребоваться функция закрытия. Кроме того, явное закрытие файлов часто делает логику вашей программы более понятной.

После того, как вы создали дескриптор файла для чтения, просто включите его имя в оператор diamond, чтобы прочитать из рассматриваемого файла. Следующая простая программа запрашивает имя файла, открывает файл и затем печатает самую длинную строку, найденную в файле.

вывести «Имя файла, который нужно открыть?»; $ filename = <STDIN>; chomp $ filename; open (FI, "<$ filename") || die "Не удалось открыть $ filename"; while (<FI>) {if (length> $ maxlength) {$ maxlength = length; $ maxline = $ _; }} print "Самая длинная строка ($ maxlength символов): \ n $ maxline"; вывести «Имя файла, который нужно открыть
Следующий: Больше магии от Up: Базовый ввод / вывод Предыдущая: печать & NBSP содержание Фил Спектор 2002-10-18

Похожие

Как играть MKV на LG телевизор легко
... файлов, как правило, содержат различные видео и аудио кодеков. MKV файлов с неподдерживаемый аудио-кодек (т.е. MKV DTS файлов) определенно не могут воспроизводиться на LG телевизор. Решение для вас поиск сторонних инструмент, чтобы сделать все легко. Wondershare Video Converter является одним из вариантов. Это хорошо, потому что вы можете использовать его как видео конвертер сначала конвертировать MKV файлов и затем
5 идей и приложений, которые могут увеличить ваши продажи
25 декабря 2014 года вступает в силу Закон от 30 мая 2014 года о правах потребителей, который для владельцев интернет-магазинов означает необходимость адаптации ко многим изменениям. За последние две недели вся команда eKomercyjnie.pl ответила на множество вопросов, связанных с этой темой. Поскольку наши нормативные документы и юридические продукты были созданы с самого начала с целью помочь всем электронным продавцам, ниже мы представляем исчерпывающую инструкцию по адаптации вашего интернет-магазина
Вывести «Имя файла, который нужно открыть?