Применительно для веба процедурный стиль вполне уместен. Впрочем, я почти не видел веб-приложений не в процедурном стиле несмотря даже на то, что есть там есть классы, ибо классы эти в основном описывают объекты без состояния вроде контроллеров и сервисов, в которых 95% логики. А писать метод create_order внутри класса OrderService или писать процедуру create_order внутри модуля ordering особой архитектурной разницы не имеет. Почитайте про MVC. На три слоя поделить можно и с процедурным подходом. Хоть это деление и приписывают ООП, но его можно найти в любой парадигме.
Что касается идеи сделать методы save/create/update/delete у модели юзер — это те редкие примеры применения ООП, которые все таки используются. Такое решение называется ActiveRecord. Если у вас нету библиотеки-ORM, то советую не отходить от процедурного же паттерна DAO (почитайте про него). Помните, то процедурное программирование, которое используете вы совсем не то, что ругают в книжках, так как perl по крайней мере динамический язык.