Over the next three nights, Erwin didn’t rewrite the code. He performed surgery with the PDF as his scalpel. He wrapped bare blocks in do { } . He replaced if(!$var) with unless($var) . He added perlcritic to the CI pipeline and watched its severity ratings drop from “brutal” to “stern.”
He remembered the line he’d written last year: $data =~ /(.*?),(.*?),(.*?),(.*?),(.*?),(.*?)/; — then six lines of $foo = $4 . It worked. But it was a crime scene.
Erwin was a archaeologist of broken things. While other sysadmins chased cloud-native glitter, Erwin maintained the legacy core—a sprawling Perl backend that processed global financial settlements. The code was old enough to vote, buy a drink, and run for local office. It had no tests, no consistent indentation, and variables named things like $x2a and $foo_final_FINAL . perl best practices pdf
Chapter 1: Always use use strict; and use warnings; .
He felt a pang of shame. The core script had neither. Over the next three nights, Erwin didn’t rewrite the code
The system didn’t break again. And when someone asked why, Erwin would tap the side of his monitor and say: “The PDF teaches you how to write code for the person who finds your body.”
He thought of the thirty-seven lines where $a held a transaction ID and $b held a customer’s social security number. He replaced if(
By Thursday, the Perl script was still ugly. But it was consistent in its ugliness. Every else was cuddled. Every subroutine had a return . Every filehandle used the three-argument open . The auditors, who didn’t read Perl, saw a printed metric: “Cyclomatic complexity: reduced 42%.” They signed off.
Erwin stared at the wall. Then, like a vision, he remembered a legendary text: Perl Best Practices by Damian Conway. Not the shiny new edition—the original PDF, the one with the stern cover and the weight of a thousand linting rules.