All the Perl that's Practical to Extract and Report

Navigation

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Without JavaScript enabled, you might want to
use the classic discussion system instead. If you login, you can remember this preference.

... CGI performance is irrelevant, since nobody uses CGI anymore. Modern Perl trades compile-time speed for runtime speed. If you think it's a good idea to recompile your application every time there is a web request, then you should probably not use Catalyst or HTTP::Engine.

FWIW, Shika is being rolled into Mouse, which means HTTP::Engine will soon be both fast and easily compatible with Moose and Moose extensions... and every other user of Moose/Mouse gets that speed for free!

That's just BS. I use vanilla CGI plenty, and it has never been the source of declaring that an application was too slow or otherwise inappropriate technology. I back up the benefits of vanilla CGI [stosberg.com] specific details on hosting availability and expected performance limits where CGI quits being a good choice.

I totally agree that Catalyst apps would run too slow in vanilla CGI, but Catalyst alone does not define "modern Perl".

The features aren't really the same. Try doing something like Some::Role->meta->apply( $c->request ). A lot of Moose (and Catalyst) imitators steal the sugar, but the sugar is not the power... the internal consistency and extensibility is.

Anyway, doesn't matter much if all you want to do is get some crap out of a database and add some HTML tags around it. TMTOWTDI.

What’s the use of HTTP::Engine when you’re running under CGI anyway? Might as well cut out the middle men and just use CGI::Simple. At least then you have no worries about latency.

It doesn’t provide a sensible upgrade path anyway, since engineering for minimal startup time is so different from engineering for a persistent environment. You don’t want to just take a CGI script verbatim and run it as a server, even if that script happens to be written against HTTP::Engine.

I think a "use case" might be something like Movable Type. When they distribute it, they don't know ahead of time whether it will be deployed in CGI, FastCGI, or mod_perl, so they code it work in all three, and could HTTP::Engine to abstract which backend is in use.

I actually use Movable Type in CGI because it was easy to deploy that way, and nearly all the public parts are rendered as static HTML. The admin interface is a bit slow, but I'm not the only user and it's fast enough for me.