They all do it the exact same way :) the modules are different, but its all the same 100%
my $object = CGI->new; ## NOTHING TO GRUMBLE ABOUT HERE
They're all basically HTTP::Requests (HTTP::Messages), you get access to headers, you get a request object, which gives you access to params , or to file uploads ,or to the raw content if you want it
They're all the same everywhere in every programming language; the details are different (app->cookies versus request->headers->cookie ... lots of overlap and shortcuts )
Some advanced features include dumping the request to harddisk for lower memory usage and providing a filehandle to this temporary ...
similar advanced feature is stream-from-disk instead of loading in memory for responses
Mojo::Message::Request, Dancer::Request, Dancer2::Core::Request, Catalyst::Request, Apache::Request, Apache2::Request, Plack::Request
Unlike CGI.pm (which does a bunch) most of these have a corresponding ::Response object and various helpers, but thats about all the difference
All the frameworks give you a request object
All the frameworks want you to give them a response object
CGI.pm is very flexible but its about print not return for responses; if you use CGI::Application framework you get the same organization (request/response, no printing)
Most folks reflexively badmouthing CGI.pm are extremely ignorant about it
If you're using CGI.pm and following CGI to mod_perl Porting. mod_perl Coding guidelines you're 98% modern , only 2% away from using any "modern frameworks" which have a response object
|