in reply to Different Ways to Do It

You might want to look at building something with Class::DBI.