использовать ли CGI.pm?
Использовать ли CGI.pm для написания кода или писать всё через html посредством print?
Не то и не другое. Использовать шаблонизаторы.
CGI.pm для получения параметров, и загрузки файлов. и HTML::Template (например) в качестве шаблонизатора.