Кроме функций, описанных в предыдущих разделах, интерфейс DBI содержит множество дополнительных функций, предназначенных для обработки результирующих наборов. Эти функции позволяют производить выборку информации о количестве строк, обработанных запросом, связывать поля результирующего набора с переменными Perl, выделять специальные символы в строках запросов и т.д. В табл. 20.6 дан перечень наиболее важных функций этого типа. 
Вспомогательные функции
Практическое применение интерфейса Perl DBI
После ознакомления с основами программирования с использованием интерфейса Perl DBI, применим полученные знания на практике. В этом разделе мы попробуем использовать интерфейс Perl DBI. Это будет сделано на примере Web-приложения, которое бы отображало содержимое базы данных и позволяло пользователям прокомментировать это содержимое. При этом как содержимое, так и комментарии сохраняются в одной базе данных MySQL, "заботу" о динамическом генерировании страниц приложения берет на себя Perl (вызывая методы интерфейса DBI, описанные в предыдущих разделах).

Проектирование базы данных
Первый шаг при разработке такой прикладной программы заключается в определении требований к ней. В этом сценарии предусматривается довольно простая архитектура Web-узла: каждая статья представлена записью в таблице, которая содержит заголовок статьи, ее краткий обзор и полное содержание. Каждая статья идентифицируется соответствующим номером статьи. Этот номер статьи может использоваться приложением для выборки содержимого статей и отслеживания читательских отзывов по статьям.
Посетители Web-узла имеют возможность комментировать любую статью. Эти ком­ментарии сохраняются в соответствующей таблице MySQL. Они содержат тему и текст комментария, электронный адрес отправителя и временную отметку. Комментарии представляются в форме дерева, т.е. пользователь может дать комментарий, ответить на другой, ранее сделанный комментарий, а прикладная программа должна отображать такие комментарии в виде дерева.
Итак, разрабатываемая прикладная программа должна состоять из следующих четырех блоков.
■ Индексная страница, содержащая все возможные статьи и их описание. Читатели используют индексную страницу для выборки просматриваемой статьи.
■ Детализированная страница со статьей, отображающая полное содержимое выбранной статьи и все комментарии по данной статье в случае их наличия. Комментарии отображаются в виде дерева. Читатель имеет возможность выборки любого комментария и ответа на него. Кроме того, он может начать новую ветвь комментариев.
■ Детализированная страница комментария, отображающая полный текст выбранного комментария и позволяющая читателям ответить на данный комментарий.
■ Форма приема пользовательских комментариев и добавления их в дерево ком­ментариев.
Для того чтобы создать такое приложение, необходимо разработать таблицы, которые смогли бы хранить всю необходимую информацию.
Листинг 20.30.
CREATE TABLE articles (
aid int(8) NOT NULL auto_increment, atitle varchar(255) NOT NULL default ' ', adesc varchar(255) NOT NULL default ' ', abody text NOT NULL,
atimestamp datetime default NULL,
PRIMARY KEY (aid)
) TYPE=MyISAM;
Структура этой первой таблицы достаточна проста. Она содержит список всех статей, доступных для просмотра, и каждой статье присваивается уникальный идентификатор. В этой таблице также сохраняется название статьи, ее краткое содержание, временная отметка, отражающая время добавления статьи в систему и, собственно, текст статьи. Ввод данных в эту таблицу должен производиться вручную или с помощью системы управления содержимым, т.е. менеджерами Web-узла.
Для того чтобы вдохнуть в это приложение жизнь, представим образцы записей этой таблицы. 
Листинг 20.31.
INSERT INTO articles VALUES (4, 'Getting Away With Murder', 'A superbly choreographed musical charged with the gritty realities of sex, scandal and the fickleness of fame', 'Rather than just relying on its star-studded cast to make it a runaway success, it is Chicago's irreverent look at murder and manipulation of the media that makes it refreshingly different from romantic, and often sappy, musicals. The inmates , rendition of jailhouse jazz - lithe bodies in Lycra and latex - in particular epitomizes the essence of this sexy and often darkly humorous satire. All in all, the movie gives its audience more than just the old razzle-dazzle.', '2003-08-19 17:34:55'); INSERT INTO articles VALUES (5, 'Towering High', 'The second installment of the Tolkien epic is bigger and better than its predecessors.', 'If you've watched The Fellowship of The Ring, you understand this is more a film about scale than about simple storytelling. In the second part of this three-volume tome, the story strays from that singular epic journey of the first volume into three separate expeditions, now with more motives than one. Frodo and Sam are on their way to Mordor to destroy the ring, whose ...', '2003-08-19 17:36:52'); INSERT INTO articles VALUES (6, 'Pottermania!', 'Harry's back!', 'For those of you who are Potter fans, and have been eagerly awaiting the release of the second installment of the Harry Potter series, this movie is definitely worth a watch. Harry Potter And The Chamber Of Secrets is packed with great visual effects, better acting, and is much more visually appealing than its predecessor. It also, of course, comes with a brilliant storyline.', '2003-08-19 17:40:01');