In a previous blog post, I explored the modern way to write CGI scripts using frameworks like Mojolicious. But as pointed out in comments, despite the many benefits, there is one critical problem: when you actually need to deploy to a regular CGI server, where the scripts will be loaded each time and not persisted, frameworks designed for persistent applications add lots of overhead to each request.
CGI scripts have historically been written using the CGI module (or even more ancient libraries). But this module is bulky, crufty, and has serious design issues that led to it being removed from Perl core.
Enter CGI::Tiny. It is built for one thing only: serving the CGI protocol. In most cases, frameworks are still the right answer, but in the case of scripts that are forced to run under the actual CGI protocol (such as shared web hosting), or when you want to just drop in CGI scripts with no need to scale, CGI::Tiny provides a modern alternative to CGI.pm. You can explore the interface differences from CGI.pm or suggested ways to extend CGI::Tiny scripts.
So without further ado, here is the equivalent CGI::Tiny script to my previous blog post's examples:
#!/usr/bin/env perl
use strict;
use warnings;
use CGI::Tiny;
cgi {
my $cgi = $_;
my $input = $cgi->param('input');
$cgi->render(json => {output => uc $input});
};
Top comments (4)
Do you know light weight template modules with CGI::Tiny?
see metacpan.org/pod/CGI::Tiny::Cookbo... for my suggestions. It depends what kind of lightweight you are looking for.
Thanks. Mojo::Template can be used for this purpose!
Thanks for the trip down memory lane! 😁