The module
Class::DBI was exactly what I was looking for... thanks!
Like koolade suggested, it may not be a good idea to open a database connection for every object, since I may have the case where a query for guests may return up to 100 objects. It looks like this module is efficient in that respects using the module Ima::DBI where it states:
Holds off opening a database connection until necessary.
While Ima::DBI is informed of all your database connections and SQL statements at compile-time, it will not connect to the database until you actually prepare a statement on that connection.
This is obviously very good for programs that sometimes never touch the database. It's also good for code that has lots of possible connections and statements, but which typically only use a few. Kinda like an autoloader.