
- •Язык программирования 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
Операторы для работы с файлами
Perl содержит обширный список операторов для работы с файлами. Имеется не менее 27 операторов, возвращающих специфическуюинформацию о файле, даже не открывая его. Многие операторы языкаPerl ориентированы на системы UNIX, но следующие операторы работают на любых системах:
-d проверяет наличие каталога -е определяет наличие файла -s определяет размер файла -w определяет, можно ли писать в данный файл
Следующие два файловых оператора возвращают булево значение.Третий оператор возвращает размер файла в байтах. Следующий текстиллюстрирует использование этих операторов:
if (-e,'perl.exe')
{
print 'File size is:' -s 'perl.exe';
}
else
{
print 'can\' t find perl.exe\n';
}
(-w 'SomeFile') || die "Cannot write to SomeFile\n";
Приоритеты выполнения операторов
Как и всякий язык программирования, Perl определяет приоритеты выполнения операторов, с помощью которых упорядочиваетсяпоследовательность их выполнения. Таблица 12.2 перечисляет приоритеты операторов начиная от высшего и следуя к низшему:
? ++? ! ~ унарный минус
? **
? =~ !~
? * / % х
? +? <<>>
? -d -е -s -w (и другие файловые операторы)
? <> <= >= It gt le ge
? = = != < => eq ne cmp
? &
? |^
? &&
? ||
? ..
?
? : = += -= *=
Табл. 12.2. Приоритеты операторов языка Perl от высшего к низшему
В своем скрипте вы можете изменять последовательность выполнения операторов с помощью скобок.
Конструкции языка perl
Perl поддерживает все выражения языка С, используя почтиидентичный их формат. Например, управляющие конструкции if,while, do. for и goto используются в обоих языках в одинаковойформе. Как вы увидите в дальнейшем, оператор continue имеет несколько иное значение в языке Perl. Его прежнее значение теперьназывают next, а оператор break называют теперь last. Perl нереализует оператор switch. Кроме того, некоторые выражения языкаС можно найти в Perl в иных форматах и добавлены многие новые выражения.
Простые и составные операторы
Простым выражением называется любая допустимая комбинацияоператоров и операндов. В языке Perl оператором является выражение, заканчивающееся точкой с запятой. Как и в языке программирования С, все операторы оканчиваются точкой с запятой. Когда вывводите текст программы в отладчик, можно опускать точку с запятой, поскольку отладчик поставит ее за вас. Следующий текст иллюстрирует простой оператор присваивания на языке Perl:
$Title = 'Web Programming';
Так же как и при программировании на С, скрипты Perl могутсодержать блоки операторов, или составные операторы, которые помещаются в фигурные скобки ({}), как показано ниже:
{
# Операторы
# Другой блок операторов
}
Ваши скрипты будут широко использовать блоки инструкций наряду с более сложными операторами. Как и в языке С, скрипты наязыке Perl могут использовать блоки инструкций для определенияобласти видимости (scope) локальных переменных. Однако определение локальных переменных в блоке не является автоматическим. Дляих декларации скрипт должен использовать ключевое слово local.Далее в этой главе мы рассмотрим область видимости переменных вдеталях.