- Что есть в этой книге
- Что еще вам потребуется
- Другие ресурсы
- От издательства
Часть I.
- Коротко
- Непосредственные решения
- Как скопировать и установить Perl
- Как написать сценарий для Perl
- Убедитесь, что сценарий сможет найти Perl
- Unix
- MS-DOS
- Windows 95/98 и Windows NT
- Macintosh
- Как написать программу Perl: команды и описания
- Выполнение сценариев Perl
- Как ваш сценарий может найти
Perl сам
- Как использовать командную
строку
- Интерактивное выполнение сценариев Perl
- Ключи командной строки
- Ключ -w и проверка синтаксиса
- Текстовый ввод и вывод с помощью стандартных
дескрипторов файлов
- Вывод текста
- Печать номера текущей строчки сценария и имени сценария
- Повтор текста при печати
- Основные команды форматирования
- Вывод неформатированного текста: встроенные документы
- Комментарии
- Чтение потока ввода
- Специальная переменная $_
- Очистка введенного текста
- Как избежать немедленного закрытия окна MS-DOS в Windows
95/98/NT
- Коротко
- Скалярные переменные
- Списки
- Непосредственные решения
- Что такое скалярная переменная?
- Имена скалярных переменных
- Присвоение скалярных переменных
- Что такое "левое значение"?
- Использование чисел в скалярных переменных
- Работа с неопределенными данными: идентификатор undef
- Описание констант
- Работа с логическими данными в Perl
- Преобразование восьмеричных, десятичных и
шестнадцатеричных чисел
- Преобразование
шестнадцатеричного числа в десятичное
- Преобразование десятичного числа
в шестнадцатеричное
- Преобразование восьмеричного
числа в десятичное
- Преобразование десятичного числа
в восьмеричное
- Округление чисел
- Использование строк в скалярных переменных
- Символ новой строки в текстовых
строках
- Подстановка переменных (интерполяция строк)
- Сложные случаи интерполяции
- Обработка кавычек и слов без кавычек
- Что такое список?
- Ссылка на элементы списка через индекс
- Присваивание списков спискам
- Преобразование списка
- Объединение элементов списка в строку
- Превращение строки в список
- Сортировка списков
- Инвертирование списка
- Выбор элементов из списка
- Скалярный и списковый контексты
- Форсирование скалярного контекста
- Коротко
- Массивы
- Хэши
- Записи таблицы символов typeglob
- Непосредственные решения
- Создание массивов
- Использование массивов
- Операции push и pop
- Операции shift и unshift
- Определение длины массива
- Увеличение или сужение массива
- Слияние двух массивов
- Получение среза массива
- Циклы и массивы
- Вывод массива
- Сращивание (splicing) массива
- Инвертирование массива
- Сортировка массива
- Создание хэшей
- Использование хэшей
- Добавление элементов в хэш
- Проверка хэша на наличие элемента
- Удаление элементов хэша
- Циклы по хэшу
- Вывод хэша
- Сортировка хэша
- Слияние хэшей
- Использование хэшей и массивов в присвоении списком
- Использование типа данных typeglob
- Тип данных typeglob и записи в таблице символов
- Коротко
- Приоритет операторов
- Непосредственные решения
- Наивысший приоритет: термы и списки, стоящие справа
- Оператор-стрелка
- Автоприращение и автоуменьшение
- Возведение в степень
- Унарные операторы
- Оператор связывания
- Умножение и деление
- Сложение, вычитание и конкатенация
- Оператор сдвига
- Именованные унарные операторы
- Операторы проверки файлов
- Операторы сравнения
- Операторы равенства
- Побитное "И"
- Побитное "ИЛИ"
- Побитное "Исключающее ИЛИ"
- Логическое "И" в стиле языка С
- Логическое "ИЛИ" в стиле языка С
- Оператор диапазона в списковом контексте
- Оператор диапазона в скалярном контексте
- Тернарный условный оператор
- Оператор присвоения
- Оператор-запятая
- Списки, стоящие слева
- Логическое NOT
- Логическое AND
- Логическое OR
- Логическое XOR
- Краткое введение
- Условные операторы
- Операторы цикла
- Немедленные решения
- Условный оператор if
- Команда unless
- Оператор цикла for
- Оператор цикла foreach
- Оператор цикла while
- Оператор цикла until
- Модификаторы if, unless, until, while и for
- Как создать цикл do while
- Команда next: как перейти к следующей итерации
- Команда last: как прервать выполнение цикла
- Команда redo: как вернуться к началу итерации
- Блок команд как оператор цикла
- Создание переключателей switch
- Оператор безусловной передачи управления goto
- Выполнение кода Perl с помощью команды eval
- Выход из программы с помощью команды exit
- Выход из программы с помощью команды die
- Коротко
- Использование регулярных выражений
- Оператор проверки совпадений
m/.../
- Оператор подстановки s/.../.../
- Оператор замены tr/.../.../
- Непосредственные решения
- Создание регулярных выражений
- Одиночные символы в регулярных выражениях
- Совпадение с любым символом
- Классы символов в регулярных выражениях
- Альтернативные шаблоны в регулярных выражениях
- Квантификаторы в регулярных выражениях
- "Жадность" квантификаторов
- Мнимые символы в регулярных выражениях
- Ссылки на найденный текст
- Дополнительные конструкции в регулярных выражениях
- Модификаторы команд m/.../ и s/.../.../
- Особенности работы команд m/.../ и s/.../.../
- Предварительная обработка
регулярных выражений
- Работа команды m/.../ в режиме
однократного поиска
- Работа команды m/.../ в режиме
глобального поиска
- Замена строк с помощью команды tr/.../.../
- Модификаторы команды tr/.../.../
- Поиск отдельных слов
- Привязка к началу строки
- Привязка к концу строки
- Поиск чисел
- Проверка идентификаторов
- Как найти множественные совпадения
- Поиск нечувствительных к регистру совпадений
- Выделение подстроки
- Вызов функций и вычисление выражений при подстановке
текста
- Поиск n-го совпадения
- Как ограничить "жадность" квантификаторов
- Как удалить ведущие и завершающие пробелы
- Утверждения, проверяющие текст перед и после шаблона
- Коротко
- Работа с подпрограммами
- Непосредственные решения
- Объявление подпрограмм
- Использование прототипов
- Определение прототипов
- Вызов подпрограмм
- Чтение аргументов, переданных подпрограмме
- Использование переменного числа параметров
- Использование значений по умолчанию
- Значения, возвращаемые подпрограммами (функциями)
- Управление областью видимости (ключевые слова my и
local)
- Требование обязательной лексической области видимости
- Создание временных переменных (ключевое слово local)
- Постоянные (статические) переменные
- Рекурсивный вызов подпрограмм
- Вложенные подпрограммы
- Передача параметров по ссылке
- Передача записи таблицы символов (тип данных typeglob)
- Проверка контекста вызова функции: функция wantarray
- Создание встраиваемых функций
- Замещение встроенных функций. Псевдопакет CORE
- Непоименованные подпрограммы
- Создание таблиц диспетчеризации подпрограмм
- Коротко
- Жесткие ссылки
- Символические ссылки
- Оператор-стрелка
- Анонимные массивы, хэш-таблицы, подпрограммы
- Непосредственные решения
- Создание ссылки
- Ссылки на анонимные массивы
- Ссылки на анонимные хэши
- Ссылки на анонимные подпрограммы
- Как извлечь ссылку из таблицы символов
- Разыменование ссылок
- Разыменование ссылок с помощью оператора-стрелки
- Когда можно опускать оператор-стрелку
- Как определить тип ссылки с помощью оператора ref
- Создание символических ссылок
- Запрет символических ссылок
- Использование ссылок на массивы как ссылок на хэши
- Как создать замыкание области видимости в устойчивую
форму
- Создание функций на основе шаблонов
Часть II.
- Коротко
- Развернутые имена встроенных переменных
- Настройка встроенных переменных на конкретные
дескрипторы файлов
- Непосредственные решения
- $' - строка, следующая за совпадением
- $- - число строк, оставшихся на странице
- $! - текущая ошибка
- $" - разделитель полей массивов при интерполировании
- $# - формат вывода чисел с плавающей точкой
- $$ - идентификатор процесса Perl
- $% - текущая страница вывода
- $& - совпадение с шаблоном поиска
- $( - реальный идентификатор группы пользователей (real
GID)
- $) - текущий идентификатор группы пользователей
(effective GID)
- $* - совпадение с шаблоном поиска
- $, - разделитель полей вывода
- $. - текущий номер строки ввода
- $/ - разделитель входных записей
- $: - маркер разбивки строки
- $; - разделитель индексов
- $? - статус последней системной операции
- $@ - ошибка выполнения функции eval
- $[ - базовый индекс массивов
- $\ - разделитель выходных записей
- $] - версия Perl
- $^ - текущий формат колонтитула страницы
- $^A - накопитель команды write
- $^D- текущие флаги отладки
- $^E- информация об ошибке, специфичная для операционной
системы
- $^F - максимальное количество дескрипторов файлов
- $^H - флаги проверки синтаксиса
- $^I - расширение файлов для редактирования "по месту"
- $^L - символ прогона страницы
- $^M - буфер памяти "на крайний случай"
- $^O - имя операционной системы
- $^P - поддержка отладки
- $^R - результат вычисления утверждения в теле шаблона
- $^S - состояние интерпретатора
- $^T - время запуска сценария на выполнение
- $^W - режим вывода предупреждающих сообщений
- $^X - имя программы-интерпретатора
- $_ - аргумент по умолчанию
- $` - строка, следующая перед совпадением
- $| - управление буфером вывода
- $~ - имя текущего формата отчетов
- $+ - фрагмент совпадения
- $< - реальный идентификатор пользователя (Real User
ID)
- $= - текущий размер страницы
- $> - текущий идентификатор пользователя (Effective
User ID)
- $O - имя программы
- $ARGV - имя входного файла
- $nn - nn-й фрагмент совпадения
- %ENV - переменные окружения
- %INC - подключаемые файлы
- %SIG - обработчики ситуаций
- @_ - аргументы, переданные подпрограмме
- @ARGV - аргументы, переданные в командной строке
- @INC - пути поиска подключаемых файлов
- Коротко
- Непосредственные решения
- abs - абсолютное значение
- atan2 - арктангенс
- chomp - удаление конца строки
- chop - удаление последнего символа строки
- chr - преобразование числа в символ
- cos - косинус
- each - пара ключ/значение из хэша
- eval - компилирование и выполнение команд Perl
- exists - проверка ключа в хэше
- exp - вычисление экспоненциальной функции
- hex - преобразование шестнадцатеричного числа
- index - положение подстроки
- int - целая часть числа
- join - преобразование списка в строку
- keys - список ключей хэша
- lc - преобразование букв к нижнему регистру
- lcfirst - преобразование первой буквы к нижнему регистру
- length - длина строки
- log - натуральный логарифм
- map - выполнить команду для каждого элемента списка
- oct - преобразование восьмеричного числа
- ord - преобразование символа в код
- pack - упаковка значений
- pop - извлечение данных из массива
- Функции POSIX
- push - добавление данных к массиву
- rand - случайное число
- reverse - переставить список в обратном порядке
- rindex - положение подстроки
- scalar - форсирование скалярного контекста
- shift - извлечение первого элемента массива
- sin - синус
- sort - сортировка списка
- splice - замена среза массива
- split - разбивка строки на список строк
- sprintf - форматирование строки
- sqrt - квадратный корень
- srand - инициатор генератора случайных чисел
- substr - подстрока текстовой строки
- time - время в секундах с 1 января 1970 года
- uc - преобразование букв к верхнему регистру
- ucfirst - преобразование первой буквы к верхнему
регистру
- unpack - упаковка значений
- unshift - добавление первого элемента в массив
- values - список значений хэша
- vec - вектор целых значений без знака
- Коротко
- Форматы Perl
- Непосредственные решения
- print - печать списка данных
- printf - печать форматированного списка данных
- Чтение входного потока <>
- getc - считать одиночный символ
- write - вывод форматированной записи
- Форматы: текст, выровненный по левому краю
- Форматы: текст, выровненный по правому краю
- Форматы: центрированный текст
- Форматы: печать чисел
- Форматы: форматированный многострочный вывод
- Форматы: форматированный многострочный вывод с вырезкой
нужного текста
- Форматы: неформатированный многострочный вывод
- Форматы: вывод колонтитула (заголовка страницы)
- Форматы: вывод нижнего колонтитула
- Форматы: специальные переменные Perl
- Форматы: формальный синтаксис
- warn - вывод предупреждающих сообщений
- IPC: exec - системный вызов
- IPC: system - ветвление и выполнение системной команды
- IPC: как прочитать данные, переданные другой программой
- IPC: как переслать данные другой программе
- IPC: вывод данных в дочерний процесс
- IPC: вывод данных в родительский процесс
- IPC: как переслать сигнал другому процессу
- IPC: использование сокетов1
- IPC: использование технологии Win32 OLE Automation1
- Коротко
- Кое-что о работе с файлами
- Непосредственные решения
- open - открытие файла
- close - закрытие файла
- print - вывод в файл
- write - запись в файл
- binmode - установка двоичного режима
- Управление буферизацией вывода
- Чтение файлов, переданных через командную строку
- Чтение из дескриптора файла
- read - чтение входных данных
- readline - считывание строки ввода
- getc - считывание одиночного символа
- seek - поиск заданной позиции в файле
- tell - текущая позиция в файле
- stat - информация о файле
- Файловые функции модуля POSIX
- select - выбор дескриптора файла для STDOUT
- eof - проверка конца файла
- Запись базы данных DBM
- Как прочитать файл базы данных формата DBM
- flock - блокировка файла
- chmod - изменение прав доступа к файлу
- rename - переименование файлов
- glob - поиск файлов по шаблону
- unlink - удаление файлов
- opendir - открытие каталога
- closedir - закрытие каталога
- readdir - чтение содержимого каталога
- seakdir - установка текущей позиции в каталоге
- telldir - чтение текущей позиции в каталоге
- rewinddir - установка текущей позиции на начало каталога
- chdir - смена текущего каталога
- mkdir - создание нового каталога
- rmdir - удалить каталог
Часть III. Программирование
- Коротко
- Использование модулей Perl
- Непосредственные решения
- Term::Cap - работа с терминалом
- Math - комплексные числа и числа большой разрядности
- POSIX - функции Portable Operating System Interface
- Benchmark - тестирование производительности
- Time - измерение времени и преобразование форматов
времени
- Carp - сообщения об ошибках с указанием точки вызова
- locale - использование локальных настроек компьютера
- File - операции с файлами
- Net - доступ к сети Интернет
- Safe - безопасное выполнение кода
- Tk - средства работы с библиотекой Tk
- Tk: кнопки и текстовые интерфейсные элементы
- Tk: кнопки с зависимой и независимой фиксацией
- Tk: интерфейсный элемент "список"
- Tk: интерфейсный элемент "шкала"
- Tk: интерфейсные элементы графики ("канва")
- Tk: интерфейсные элементы меню
- Tk: окна диалога
- Коротко
- Подсказка: используйте команду use strict vars
- Непосредственные решения
- Сложные записи: хранение ссылок и других элементов
- Объявление массива массивов
- Создание массива массивов "на лету"
- Доступ к элементам массива массивов
- Объявление хэша хэшей
- Создание хэша хэшей "на лету"
- Доступ к элементам хэша хэшей
- Объявление массива хэшей
- Создание массива хэшей "на лету"
- Доступ к элементам массива хэшей
- Объявление хэша массивов
- Создание хэша массивов "на лету"
- Доступ к элементам хэша массивов
- Связные списки и кольцевые буферы
- Коротко
- Пакеты
- Модули
- Непосредственные решения
- Как создать пакет
- Создание пакета: конструктор BEGIN
- Создание пакета: деструктор END
- Как определить текущий пакет
- Как разбить пакет на несколько файлов
- Создание модулей
- Документирование модулей
- Как по умолчанию экспортировать имена модуля
- Как разрешить экспорт имени, но по умолчанию его не
экспортировать
- Как отключить импорт имен при загрузке модуля
- Как запретить экспорт имени
- Экспортирование без помощи метода import
- Создание вложенных модулей
- Проверка версии модуля
- Автозагрузка модулей
- Использование автозагрузки и самозагрузки подпрограмм
- Коротко
- Классы
- Объекты
- Методы
- Наследование
- Непосредственные решения
- Создание класса
- Создание конструктора
- Создание объекта
- Создание метода класса
- Создание метода экземпляра
- Вызов метода
- Создание переменной экземпляра
- Создание приватных методов и данных
- Создание переменной класса
- Создание деструктора
- Как реализовать наследование классов
- Наследование конструкторов
- Наследование переменных экземпляра
- Наследование методов
- Наследование методов: виртуальные методы
- Наследование методов: методы инициализации
- Наследование переменных класса
- Множественное наследование
- Множественное наследование: проблемы
- Наследование данных
- Наследование методов
- Замещение методов
- Переменные класса
- Конструкторы
- Деструкторы
- Инкапсуляция вместо наследования
- Связывание переменных
- Связывание скалярных переменных
- Связывание массивов
- Связывание хэшей
- Использование класса Perl UNIVERSAL
- Коротко
- Пример сеанса отладки
- Непосредственные решения
- Перехват ошибок времени выполнения
- Запуск отладчика
- Доступные команды отладчика
- Просмотр исходного кода
- Пошаговое выполнение
- Пошаговое выполнение без захода в подпрограммы
- Установка точек прерывания
- Удаление точек прерывания
- Запуск программы до следующей точки остановки
- Печать выражения
- Вычисление выражения
- Изменение значений переменных
- Установка глобальных условий
- Установка отладочных действий
- Выход из отладчика
- Руководство по стилю программирования на Perl
Часть IV. Создание
- Коротко
- Использование CGI.pm
- Создание и использование элементов управления HTML
- Непосредственные решения
- Использование языка PerlScript
- Начинаем HTML-документ
- Создаем заголовки HTML
- Центрируем элементы
- Создаем маркированный список
- Создаем гиперссылку
- Создаем горизонтальную полосу
- Создаем HTML-форму
- Работаем с текстовыми полями
- Чтение данных из элементов управления HTML
- Работаем с текстовыми областями
- Работаем с кнопками с независимой фиксацией
- Работаем со списками
- Работаем с кнопками с зависимой фиксацией
- Работаем с раскрывающимся списком
- Работаем со скрытыми полями данных
- Создаем кнопки отмены и подтверждения
- Закрываем HTML-форму
- Закрываем HTML-документ
- Функционально-ориентированное CGI-программирование
- Коротко
- Использование cgi-lib.pl
- Непосредственные решения
- Какие подпрограммы входят в состав cgi-lib.pl?
- Начинаем документ HTML
- Создаем заголовки HTML
- Центрируем элементы HTML
- Создаем маркированный список
- Создаем гиперссылку
- Создаем горизонтальную линию
- Создаем форму HTML
- Работаем с текстовыми полями
- Читаем данные из элементов управления HTML
- Работаем с текстовыми областями
- Работаем с кнопками с независимой фиксацией
- Работаем со списками
- Работаем с кнопками с зависимой фиксацией
- Работаем с раскрывающимися списками
- Работаем со скрытыми полями данных
- Создание кнопок Submit и Reset
- Закрываем форму HTML
- Завершаем документ HTML
- Выводим все переменные
- Коротко
- Защита CGI
- Непосредственные решения
- Серьезно беремся за защиту
- Работаем с мечеными данными
- Очистка данных
- Предоставляем CGI-сценарию большие привилегии в системе
UNIX
- Создаем счетчик посещений
- Создаем гостевую книгу
- Отправка почтовых сообщений из CGI-сценария
- Коротко
- Приложение для поддержки многопользовательской беседы
(chat)
- Теневые посылки (cookies)
- Игра
- Непосредственные решения
- Создаем приложение для многопользовательской беседы
- Проблемы защиты в системе со
многими пользователями
- Обработка атак типа "отказ от
обслуживания"
- Болтаем из броузера
- Устанавливаем период обновления
HTML
- Очищаем обновленные элементы
HTML
- Читаем и записываем теневые посылки (cookies)
- Использование теневых посылок
- Как записать теневую посылку
- Как прочитать теневую посылку
- Создаем игру
- Хранение данных между вызовами
сценария в Web-страницах
- Настраиваем игру
Алфавитный
указатель
Источник: shop.piter.com