Главная arrow Программирование arrow PC arrow Perl: описатели файлов Thursday, July 27 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Perl: описатели файлов Версия для печати
Написал microsin   
22.10.2007

Описатели файлов (filehandles), строго говоря, не являются типом данных; это особый вид строковых констант. Однако, они во многом ведут себя так же, как переменные, поэтому мы описываем их в этой статье.

 

Описатели файлов создаются встроенной функцией open() и обеспечивают ввод-вывод файлов, например:

open INFO, "datafile" or die "Не могу открыть файл: $!";

Описатели файлов (как INFO в этом примере) принято записывать прописными буквами. PERL поддерживает три системных описателя файлов, которые создаются при запуске программы:

STDIN Стандартный файл ввода (по умолчанию, клавиатура).
STDOUT Стандартный файл вывода (по умолчанию, консоль; в Веб-приложениях обычно окно обозревателя).
STDERR Стандартный файл вывода сообщений об ошибках (по умолчанию, консоль; в серверных Веб-приложениях обычно файл протокола ошибок).

Для чтения данных из файла существует специальная операция <описатель>, в скалярном контексте возвращающая очередную запись файла или undef в конце файла или при ошибке чтения. Обычно записью является строка, но мы можем изменить символ конца записи, присвоив его специальной переменной $/. В любом случае возвращаемая строка содержит в конце разделитель записей. Мы можем присвоить результат этой операции любой переменной; если же операция вызвана без присваивания, то ее результат заносится в специальную переменную $_. Следующий пример читает строки из файла MYFILE.DAT и выводит их на консоль:

open INFO, "myfile.dat" or die "Не могу открыть файл: $!";
while (<INFO>) { print; }

В контексте списка эта операция считывает файл целиком и возвращает его содержимое как массив записей. Поэтому предыдущий пример можно записать так:

open INFO, "myfile.dat" or die "Не могу открыть файл: $!";
@f = <INFO>;
print @f;

Операция <описатель> является сокращением для readline(*описатель). Существует особая "пустая операция" <>, которая читает либо стандартный файл ввода, либо последовательно все файлы, перечисленные в командной строке. При первом вызове операции <> PERL проверяет специальный массив @ARGV, содержащий список аргументов командной строки, и, если он пуст, заносит в $ARGV[0] строку "-", т. е. указатель на STDIN. Каждый последующий вызов <> возвращает очередную запись текущего файла, указанного в командной строке; если файл считан полностью, то окрывается следующий файл, указанный в командной строке, и возвращается его первая запись. Для проверки того, что все файлы считаны, используется встроенная функция eof().

Для вывода данных в файл обычно используется функция print(), например:

print INFO "Моя строка";

Встроенные функции работы с файлами подробно описаны в гл. 6.11.

Материал статьи взят с сайта konus.biz.

 

Последнее обновление ( 22.10.2007 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017