One of the defining characteristics of a good programmer is an instinct for keeping implementation details in the correct layer of an application. That sounds abstract, but it turns out to explain a huge amount of the progress we’ve made in software development over the last twenty-five years. And nowhere is that clearer than in Perl web development. Many of us who built web applications during the dotcom boom spent years learning this lesson the hard way. We wrote CGI programs that: parsed HTTP requests generated HTML by hand connected directly to databases embedded SQL inline mixed business logic with presentation relied on Apache behaviour assumed specific filesystem layouts and often only worked on one particular server configuration It all worked. Until it didn’t. The history of Perl web development is, in many ways, the history of gradually moving implementation details into more appropriate architectural layers. The Early CGI Years Early Perl CGI applications were often a single giant script.…