Проведем анализ программы, приведенной в прошлом разделе.
Строки 1-4. Загрузка модулей. Включена строгая проверка синтаксиса и загружены модули Getopt::Long и HTML::TreeBuilder. Первый из этих модулей обрабатывает параметры командной строки, если они имеются. В это время не загружаются какие-либо модули типа html::Formatter, поскольку еще неизвестно, должен ли быть выработан простой текст, например, HTML страницы предоставляющей скидочные акции или текст в формате PostScript.
Строки 5-7. Обработка опций командной строки. Вызывается функция GetOptions () для интерпретации опций командной строки. В этом фрагменте кода глобальная переменная $РЗ устанавливается равной истинному значению, если указана опция postscript.
Строки 8-15. Создание соответствующего средства форматирования. Если пользователь указал опцию вывода в формате PostScript, то загружается модуль HTML::Format PS и вызывается метод new() этого класса для создания нового объекта средства форматирования.
В ином случае выполняется то же действие с классом HTML::FormatText. При создании средства форматирования HTML::Formatps методу new() передается параметр PaperSize со значением “Letter” для создания выходной информации, совместимой с обычным форматом бумаги 8 1/2 х 11", который широко применяется в Соединенных Штатах.
Строки 16-18. Интерпретация кода HTML. Создается новый синтаксический анализатор HTML::TreeBuilder путем вызова метода new() этого класса. Затем выполняется построчное чтение кода HTML с использованием оператора о и осуществляется его передача объекту синтаксического анализатора. По завершении чтения синтаксическому анализатору передается сообщение об этом путем вызова его метода eof ().