Введение, содержит вводные положения.
- Что вы должны знать
- Как быть со сносками
- Как быть с упражнениями
- Что делать, если я преподаю Perl
Основы, описывает некоторые промежуточные положения, знание которых потребуется при изучении всех последующих тем.
- Операторы списков
- Организация ловушек ошибок с помощью eval
- Исполнение программного кода, созданного динамически
Модули, описывает порядок работы с основными
модулями Perl и с модулями сторонних производителей. Далее будет показано, как создавать собственные модули, но здесь основное внимание уделено только использованию существующих модулей.
- Стандартный дистрибутив
- Использование модулей
- Функциональные интерфейсы
- Как составить список импорта
- Объектно-ориентированные интерфейсы
- Типичный объектно-ориентированный модуль Math:BigInt
- Единая архивная сеть Perl
- Установка модулей из CPAN
- Настройка списка каталогов для поиска модулей
Введение в ссылки, рассказывает о том, как организовать перенаправление, чтобы один и тот же программный код мог работать с различными
наборами данных.
- Выполнение однотипных действий с разными массивами
- Ссылки на массивы
- Разыменование ссылок на массивы
- Избавляемся от фигурных скобок
- Модификация массивов
- Вложенные структуры данных
- Упрощаем доступ к вложенным структурам с помощью стрелок
- Ссылки на хеши
Ссылки и области видимости, рассказывает о том,
как Perl работает с указателями на данные, и дает краткое введение в анонимные структуры данных и автовивификацию.
- Несколько ссылок на данные
- А если это было имя структуры
- Подсчет ссылок и вложенные структуры данных
- Ошибки при подсчете ссылок
- Создание анонимных массивов
- Создание анонимных хешей
- Автовивификация
- Автовивификация и хеши
Управление сложными структурами данных, описывает создание структур данных с произвольной глубиной вложенности, включая
массивы массивов и хеши хешей, обращение к ним и вывод их содержимого.
- Использование отладчика для просмотра данных со сложной структурой
- Просмотр данных со сложной структурой с помощью модуля Data::Dumper
- YAML
- Сохранение данных со сложной структурой с помощью модуля Storable
- Операторы grep и map
- Обходное решение
- Выбор и модификация данных со сложной структурой
Ссылки на подпрограммы, описывает поведение анонимных подпрограмм, которые могут создаваться динамически для последующего использования.
- Ссылки на именованные подпрограммы
- Анонимные подпрограммы
- Подпрограммы обратного вызова
- Замыкания
- Подпрограмма как возвращаемое значение другой подпрограммы
- Использование переменных замыканий для ввода данных
- Переменные замыканий как статические локальные переменные
Ссылки на дескрипторы файлов, описывает, как можно хранить дескрипторы файлов в скалярных переменных для передачи между различными частями программы или для сохранения в структурах данных.
- Старый способ
- Улучшенный способ
- Способ еще лучше
- IO::Handle
- Ссылки на дескрипторы каталогов
Практические приемы работы со ссылками, посвящена сложным операциям сортировки, преобразованию Шварца и работе с рекурсивно определенными данными.
- Краткий обзор способов сортировки
- Сортировка по индексам
- Эффективность алгоритмов сортировки
- Преобразование Шварца
- Многоуровневая сортировка на основе преобразования Шварца
- Данные с рекурсивной организацией
- Построение структур данных с рекурсивной организацией
- Отображение данных с рекурсивной организацией
Разработка больших программ, затрагивает вопросы создания больших программ из нескольких файлов с программным кодом, разнесенным по разным пространствам имен.
- Ликвидация повторяющихся участков программного кода
- Вставка программного кода с помощью eval
- С помощью оператора do
- С помощью директивы require
- require и @INC
- Конфликт имен
- Имена пакетов как разделители пространств имен
- Область видимости директивы package
- Пакеты и лексические переменные
Введение в объекты, расскажет вам о том, как осуществляется работа с классами, вызов методов, наследование и переопределение.
- Если бы мы могли говорить на языке зверей
- Вызов метода с помощью оператора «стрелка»
- Дополнительный параметр при вызове метода
- Вызов второго метода с целью упрощения
- Несколько замечаний о массиве @ISA
- Перекрытие методов
- Поиск унаследованного метода
- SUPER способ добиться того же самого
- Зачем нужен аргумент @_
Объекты и данные, затрагивает такие аспекты, как экземпляры данных, конструкторы и методы доступа.
- Лошадь лошади рознь
- Вызов метода экземпляра
- Доступ к данным экземпляра
- Как создать лошадь
- Наследование конструктора
- Создание метода, работающего как с экземплярами, так и с классами
- Добавление параметров к методам
- Более сложные экземпляры
- Лошадь другого цвета
- Что возвращать
- Не открывайте черный ящик
- Оптимизация методов доступа
- Операция чтения и записи в одном методе
- Ограничение доступа к методам только по имени класса или только для экземпляров класса
Уничтожение объектов, описывает поведение объектов при уничтожении, включая объекты, существующие постоянно.
- Уборка мусора
- Уничтожение вложенных объектов
- Вторичная переработка
- Форма косвенного обращения к объектам
- Дополнительные переменные экземпляра в подклассах
- Переменные класса
- Слабые ссылки
Дополнительные сведения об объектах, рассказывает про множественное наследование, автоматические методы и ссылки на дескрипторы файлов.
- Методы класса UNIVERSAL
- Проверка возможностей объектов
- Метод AUTOLOAD как последняя инстанция
- Применение AUTOLOAD для реализации методов доступа
- Более простой способ создания методов доступа
- Множественное наследование
Экспортирование, объясняет, как работает директива use, как определить, что нужно экспортировать, и как создать собственную процедуру импорта.
- Что делает директива use
- Импорт с помощью модуля Exporter
- @EXPORT и @EXPORT_OK
- %EXPORT_TAGS
- Экспорт имен в объектно-ориентированных модулях
- Собственные подпрограммы импорта
Создание дистрибутива, описывает порядок создания модулей, готовых к распространению, включая платформонезависимые инструкции по установке.
- Собрать дистрибутив можно разными способами
- Программа h2xs
- Файл README
- Встроенная документация
- Управление дистрибутивом с помощью Makefile.PL
- Изменение каталога установки (PREFIX=...)
- Тривиальная команда make test
- Тривиальная команда make install
- Тривиальная команда make dist
- Дополнительные каталоги с библиотеками
Основы тестирования, описывает порядок
тестирования программного кода с целью проверки его функциональности.
- Чем больше тестов, тем лучше программный код
- Простейший сценарий с тестами
- Искусство тестирования
- Тестирующая система
- Разработка тестов с помощью Test::More
- Тестирование объектно-ориентированных особенностей
- Списки To-Do тестов
- Пропуск тестов
- Более сложные тесты (несколько тестовых сценариев)
Дополнительные сведения о тестировании, раскрывает более сложные аспекты тестирования программного кода и метаданных, такие как документация и покрытие тестами.
- Тестирование длинных строк
- Тестирование файлов
- Тестирование устройств STDOUT и STDERR
- Работа с ложными объектами
- Тестирование документации в формате POD
- Степень покрытия тестами
- Разработка собственных модулей Test::*
Передача модулей в CPAN, расскажет вам о том, как можно отправить свои разработки в
CPAN.
- Всемирная сеть архивов Perl
- Первый шаг
- Подготовка дистрибутива
- Передача дистрибутива на сервер
- Объявление о выпуске модуля
- Тестирование на нескольких платформах
- Подумайте о написании статьи или доклада