
- •Язык программирования 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
Функция values
Функция values возвращает обычный массив, состоящий из значений ассоциативного массива. Она имеет следующий формат:
@value_list = values(%Array)
Функция values возвращает массив значений ассоциативногомассива в виде регулярного списка. Следующий фрагмент программыиллюстрирует использование функции values:
# Используем значения из предыдущего примера
%ages = ('Bob', 25, 'Mary', 30, 'Zack', 15);
@list = sort values %ages; # @list (15, 25, 30)
@list = %ages; # @list ('Zack', 15, 'Bob', 25, 'Mary', 30)
Функция each
Функция each осуществляет итерации элементов в ассоциативном массиве. Она имеет следующий формат:
@key_values = each(%Array);
Всякий раз, когда скрипт вызывает функцию each, она возвращает список из двух компонент, которые содержат пару ключ-значение. Когда функция достигает конца списка, она возвращает пустойсписок. При следующем вызове функции процесс итерации начнетсясначала. Следующий фрагмент программы иллюстрирует использованиефункции each:
# Используем значения из предыдущего примера
%ages = ('Bob', 25, 'Mary', 30, 'Zack', 15);
while (($name, $age) = each %ages)
{
# Выведем ages
print "$key is $ages{$key}\n";
}
Функция delete
Функция delete удаляет элементы ассоциативного массива. Онаимеет следующий формат:
Delete $Array{Key}
Следующая инструкция использует функцию delete для того,чтобы удалить элемент, отвечающий ключу Bob из ассоциативногомассива $Employees:
Delete $Employees{'Bob'}
Аргументы командной строки
Скриптам на языке Perl легко получить доступ к аргументамкомандной строки. Всякий раз, когда запускается скрипт, Perl помещает аргументы командной строки скрипта в списочную переменную@ARGV. Следующий фрагмент программы служит для вывода аргументовкомандной строки на дисплей:
while ($arg = shift @ARGV)
{
print "$arg\n";
}
Доступ к переменным окружения
Доступ к переменным окружения осуществляется в скриптах наязыке Perl также очень просто. Всякий раз при запуске скриптаPerl помещает копии переменных окружения в ассоциативный массив сименем %ENV. В следующей инструкции массив %ENV используется длявывода текущего каталога:
print "$ENV{PATH}\n"; # Выведет текущий каталог
Кроме получения значений из массива %ENV, скрипты также могут изменять элементы массива. Такие изменения массива %ENV изменят установку переменных окружения для всякого процесса-потомка,создаваемого скриптом. Например, следующая инструкция используетмассив %ENV для изменения текущего пути:
$ENV{PATH} = 'c:\\myexec;'.$ENV{PATH};
Примечание: Изменения, которые скрипт делает в массиве %ENV, неповлияют на исходные переменные окружения. Иными словами, послеокончания работы скрипта переменные окружения системы не изменятся.
Файловый ввод и вывод
Perl специально разрабатывался для того, чтобы служить адекватным средством для чтения и записи в текстовые файлы. Тем неменее, как вы узнаете далее, Perl выполняет функции по произвольному доступу и вводу-выводу бинарных файлов. Операции по работе с файлами требуют указатель файла (file handle), который является переменной, соответствующей конкретному файлу. По умолчанию каждый скрипт на языке Perl имеет три стандартных указателя,которые Perl автоматически открывает при запуске скрипта: STDJN,STDOUT, STDERR. Эти три стандартных указателя отвечают стандартным потокам STDIN, STDOUT, STDERR языка программирования С. Кроме того, скрипт языка Perl может открыть дополнительные указатели для других специфических файлов.