Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Perl / Для начинающих /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Файловый ввод и вывод - Программирование от RIN.RU
Файловый ввод и вывод



Построчное чтение и запись данных


Простейшим способом для чтения скриптом строки из файла служит использование оператора <FILEHANDLE"> . В языке Perl указатель файла, окруженный треугольными скобками, становится символом ввода (input-symbol). Например, следующий фрагмент программы иллюстрирует использование символа ввода для чтения и вывода на экран содержимого файла Test.dat.


open(InFile, "Test.dat") || die;
while ($line = )
{
print $line; # Выведет строку из файла
}
close(InFile);


Когда символ ввода достигает конца файла, он возвращает значение false, которое в данном случае заканчивает выполнение цикла while. Существует специальный (пустой) символ ввода, обозначаемый <> , который имеет весьма специальное, но полезное применение. В первый раз, когда скрипт использует пустой символ ввода <> , он анализирует аргументы командной строки. Если строка @ARGV является пустой, то входной символ <> читает из STDIN. Если вместо того @ARGV не пуста, то Perl открывает первый из файлов, указанных в переменной @ARGV, и читает содержимое файла. Когда Perlзаканчивает обработку одного файла, он приступает к следующему. После того как скрипт прочитал все файлы, символ <> возвращаетзначение false. Скрипты языка Perl также могут использовать символ ввода для чтения всего содержимого файла в массив так, что каждая строка файла становится элементом массива. Например, следующая инструкция читает из файла STDIN в массив @lines:


@lines = ;


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


print [FileHandle] List;


Если функция print не получает в качестве аргумента указателя файла, то она посылает вывод в STDOUT. Следующий фрагмент программы иллюстрирует использование функции print для добавления данных в выходной файл:


open(LogFile, ">>logfile.dat") || die;
##############
($m, $d, $y) = (localtime(time)) [4,3,5];
print LogFile "Captain"s log, Stardate ++m$/$d/$y\n";
close(LogFile);


Примечание: Указатель файла и выходной список не разделяются запятой.


Чтение и запись блоков данных


Программисты часто рассматривают текстовые файлы как текстовые потоки просто потому, что один символ следует за другим до маркера конца файла. Если скрипт должен работать с файлом, который ориентирован на работу с блоками, а не потоками, то скрипт может использовать функции sysread и syswrite для обработки фиксированных блоков данных. Функции sysread и syswrite имеют следующие форматы:


$result = sysread(FileHandle, $Var, Length[, Offset]);
$result = syswrite(FileHandle, $Var, Length[, Offset]);


Если в вызове функций указывается сдвиг от начала файла(Offset), то функции выполнят поиск места, с которого они начнут операции ввода/вывода. Функции sysread и syswrite обе передают данные, используя скалярную переменную строкового типа. Поскольку функции обрабатывают фиксированные блоки памяти, то данные могут содержать бинарные значения, включая нули и маркеры конца файла. Если в вызове функции указывается сдвиг от начала файла (Offset), то функция выполняет поиск места в файле, с которого начинает выполнять операции ввода/вывода. Если вы работаете с блоками данных, то скрипты могут также использовать следующие функции ввода/вывода:


$result = seek(FileHandle, Position, Base);
$result = tell(FileHandle);
$result = eof(FileHandle);


Функция seek работает в точности так же, как fseek - функция библиотеки времени выполнения языка С. Параметр Position задает позицию относительно начала отсчета, которая в свою очередь задается параметром Base следующим образом:


  • 0 - Поиск от начала файлов

  • 1 - Поиск от текущей позиции

  • 2 - Поиск от конца файла


Функция tell языка Perl работает в точности так же, как фикция ftell библиотеки времени выполнения языка С. Эта функция возвращает текущую позицию в файле, с которой выполняются операции чтения или записи. Наконец, функция eof, так же как и функция feof языка С, возвращает значение <истинно> или <ложино>, которое скрипт может использовать для определения достижения конца файла.


<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Руководство Маслов

Типы данных в PERL

Переменные

Операторы PERL

Конструкции языка PERL

Подпрограммы

Обработка строк

Обработка списков

Работа с массивами

Обработка бинарных данных

Работа с каталогами

Форматированный вывод

Регулярные выражения

CGI-скрипты при помощи PERL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь