One possible approach is don't use
DBI at all. Well, don't use it directly but use abstractions layers which can hide ugly SQL queries. Personally since I'm big OO fan I just want to use persistent objects and have all SQL queries hidden from me (at some extend). If you find such approach interesting check very nice overview of
Perl Object-Oriented Persistence modules.
--
Ilya Martynov
(http://martynov.org/)