Check out http://mojolicio.us/ for a more modern take on web dev in Perl -- the most common deployment is a nginx reverse proxy in front of the built-in (non-blocking and preforking) web server -- just like suggested setups in node/python/ruby/etc.
One cool bonus that mojo provides is hot deployments, so there's no need to restart the server process to get new code.
I run LedgerSMB over fcgi. Plack and Mojolicious are both good frameworks for that (I use Plack).
One of the neat things you can actually do in this environment (we do this for old code we inherited from SQL-Ledger due to scoping issues) is preload dependencies, then when a request comes in, fork, execute, and die. This allows you to fairly easily run fcgi-unsafe code in a fcgi environment caching what you can safely cache and disregarding the rest.
This can be a big deal for improving performance of legacy cgi code.