
- •Язык программирования perl
- •Perl как язык программирования
- •История perl
- •Perl - интерпретируемый язык программирования
- •Богатство возможностей языка perl
- •Использование perl
- •Использование perl как фильтра данных
- •Использование языка perl как шлюза безопасности
- •Frontend-программы для связи с базой данных
- •Использование языка perl для написания cgicкриптов.
- •Знакомство с языком perl
- •Установка perl
- •Использование отладчика perl
- •Типы данных в perl
- •Переменные
- •Скалярные переменные
- •Массивы
- •Роль контекста аля переменных скалярного и векторного типа
- •Ассоциативные массивы
- •Операторы perl
- •Арифметические операторы
- •Побитовые операторы
- •Операторы сравнения
- •Логические операторы
- •Строковые операторы
- •Операторы присваивания
- •Операции для работы со списками
- •Операторы для работы с файлами
- •Приоритеты выполнения операторов
- •Конструкции языка perl
- •Простые и составные операторы
- •Условные операторы
- •Оператор unless
- •Оператор do
- •Циклы и ветвления
- •Цикл until
- •Циклы for и foreach
- •Оператор безусловного перехода goto
- •Модификаторы операторов
- •Генерация динамических выражений с помощью функции eval
- •Подпрограммы
- •Библиотека подпрограмм
- •Использование пакетов для изоляции подпрограмм
- •Обработка строк
- •Функция chop
- •Функция index
- •Функция length
- •Функция substr
- •Функция join
- •Функция split
- •Функции для обработки списков
- •Функция reverse
- •Функция sort
- •Функции работы с массивами
- •Функции push и pop
- •Функция shift
- •Функция unshift
- •Функция splice
- •Функция scalar
- •Функция grep
- •Функции обработки ассоциативных массивов
- •Функция keys
- •Функция values
- •Функция each
- •Функция delete
- •Аргументы командной строки
- •Доступ к переменным окружения
- •Файловый ввод и вывод
- •Открытие файлов и других потоков
- •Построчное чтение и запись данных
- •Чтение и запись блоков данных
- •Обработка бинарных данных
- •Хранение бинарных данных
- •Распаковка строк бинарных данных в переменные языка perl
- •Упаковка данных в бинарные строки
- •Работа с каталогами
- •Открытие, чтение и закрытие каталогов
- •Форматированный вывод
- •Использование функции print
- •Форматированный вывод данных функцией printf
- •Вызов внешних программ из скрипта на языке perl
- •Регулярные выражения
- •Обзор регулярных выражений
- •Синтаксис регулярных выражений
- •Использование регулярных выражений для поиска по ключевымсловам
- •Использование регулярных выражений для анализа входных данных
- •Регулярные выражения для поиска и замены строк
- •Создание скриптов cgi с помощью perl
- •Вызов cgi-скрипта
- •Вызов сgi-скрипта в системе unix
- •Вызов скрипта на языке perl из dos и windows
- •Создание текста и html-документа с использованием языка perl
- •Добавление в документ динамических свойств
- •Доступ к строке запросов
- •Декодирование html-форм с помощью метода post
Открытие файлов и других потоков
Для того чтобы скрипт использовал файл, он должен вызватьфункцию open. Она имеет следующий вид:
open(FileHandle[, FileName])
В отличие от функции open библиотеки времени выполнения языка С, функция open языка Perl не содержит параметра mode в вызове функции. Perl определяет режим (mode) открытия файла, основываясь на имени файла. Таблица 12.3 иллюстрирует связь режима открытия файла и имени файла.
Табл. 12.3. Соглашение об именах и режимах доступа файлов языкаPerl
Имя файла |
Операция |
<FILE> |
Открыть файл только для чтения (аналогично <r> функции fopen) |
<<FILE> |
Открыть файл для чтения (то же самое, что <FILE>) |
<>FILE> |
Создать файл для записи (как <w> функции fopen) |
<>>FILE> |
Открыть файл для добавления в его конец (как <г+> функции fopen) |
<+>FILE> |
Создать файл для чтения/записи (как <rw> функции fopen) |
<+<FILE> |
Открыть файл для чтения/записи (как <rw+> функции fopen) |
<| CMD> |
Открыть канал из процесса, исполняющего команду <CMD> |
<CMD |> |
Открыть канал процессу, исполняющему команду <CMD> |
Примечание: Режим канального (pipe) потока может существовать не на всех системах.
Если в вызове функции open опущено имя файла, то Perl подразумевает, что имя файла содержится в строковой переменной$FileHandle. Когда скрипт завершил использование файла, он закрывает его, используя функцию close, как показано ниже:
close(FileHandle);
фрагмент программы иллюстрирует использование функций open иclose:
open(InFile, "test.dat") || die; # открываем для чтения
# test.dat
open(OutFile, ">test.dat") || die; # создаём test.dat
$AuxFile = ">>test.dat";
open(Aux, $AuxFile) || die; # открывает для дополнения
# test.dat
close(InFile);
close(OutFile);
close(Aux);
Обратите внимание, что указатели файлов не имеют обычных односимвольных префиксов. Как вы узнаете далее, скрипты языка Perlмогут хранить имена указателей в виде строк скалярных переменныхи передавать указатель любой функции, которая может их обрабатывать. При необходимости Perl выполняет конвертацию значений. В операционной системе MS-DOS Perl поддерживает дополнительную функцию, которая называется hinmode и позволяет файловому вводу/выводу переключаться между текстовым и бинарным режимами. В большинстве же систем различие между текстовым и бинарнымрежимами не имеет значения. Однако для операционной системыMS-DOS символ новой строки представляет собой последовательностьиз двух символов (CR+LF). Поскольку большинство программ не ожидают встретить два символа в конце строки, то система ввода/вывода должна выполнить преобразование. Для того чтобы можно было использовать функцию binmode, соответствующий указатель может бытьоткрыт. Функция binmode имеет следующий формат:
binmode(FileHandle);