
- •Язык программирования 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
Функция unshift
Функция unshift добавляет один или больше элементов к началу массива. Она имеет следующий код:
unshift(@Array, List);
Следующий фрагмент программы иллюстрирует использование функции unshift:
# @list = ()
unshift(@list,5,10,20); # @list (5,10,20)
unshift(@list, 1..3); # @list (1,2,3,5,10,20)
Функция splice
Скрипты языка Perl используют функцию splice для того, чтобы извлекать элементы из списка, заменяя их элементами другогосписка. Она имеет следующий формат:
splice(@Array, Offset[, Count[, List]]);
Функция splice извлекает указанное число элементов {Count)из массива (@Аrraу), начиная с элемента, на который указывает величина сдвига (Offset), и заменяет элементы элементами другогосписка (List). Если в вызове функции не указан параметр Count,функция извлекает элементы до самого конца массива. Если в вызове функции не указан список, элементами которого замещаются исходные элементы, то функция не добавляет никаких элементов к первоначальному списку. Следующее выражение иллюстрирует использование функции splice:
@list = 1..10;
splice(@list,1,8,5,6); # @list = (1,5,6,10)
Функция scalar
Функция scalar определяет число элементов в списке. Онаимеет следующий формат:
Rsult = scalar(List);
Обычно скрипты языка Perl не нуждаются в использовании функции scalar применительно к массивам, потому что когда скрипт обращается к массиву, записывая его в скалярном контексте, то онполучает в качестве возвращаемой величины число элементов массива. Тем не менее, скрипты могут использовать функцию scalar вслучаях, когда контекст является неоднозначным или если список неявляется массивом. Следующее выражение иллюстрирует использование функции scalar.
@list = 1..10;
print scalar(@list); # Выведет размер @list
Функция grep
Функция grep фильтрует элементы списка, для которых заданное выражение принимает значение <ложно>. Она имеет следующийформат:
@list = grep(Expression, List);
Функция grep просматривает элементы списка, подставляя их вкачестве аргумента в заданное выражение. Функция grep присваивает текущее выражение элемента списка переменной $_ и вычисляетзаданное выражение. Если полученное выражение является истинным,то функция grep добавляет этот элемент к результирующему списку.Следующий фрагмент программы иллюстрирует использование функцииgrep:
@list = grep($_ & 1, 1..10); # @list (1,3,5,7,9)
@list = ('a', '' 'b'); # @list ('a',' ','b')
@list = grep($_ eq '', @list); # @list ('a','b')
Примечание: Если выражение, модифицирует переменную. $_, то исходный список также будет модифицирован.
Функции обработки ассоциативных массивов
Как известно, ассоциативные массивы - это такие массивы, укоторых индексом является не числовая величина, а, например, имя.В языке Perl имеется несколько встроенных функций, которые упрощают обработку скриптами ассоциативных массивов.
Функция keys
Функция keys возвращает значения ключей, которые отвечаютассоциативному массиву. Она имеет следующий формат:
@key_list = keys(%Array);
Функция keys возвращает массив ключей в виде регулярногосписка. Следующий фрагмент программы иллюстрирует использованиефункции keys:
$ages{'Bob'} = 25;
$ages{'Mary'} = 30;
$ages{'Zack'} = 15;
@list = keys(%ages); # @list будет 'Zack', 'Bob', 'Mary'
@list = sort keys %ages # @ list 'Bob', 'Mary', 'Zack'
for $key (sort keys %ages)
{
print "$key is $ages{$key}\n"
}