The junior dev, remorseful, asked how to help. Erwin slid her a USB stick. “Read Chapters 1 through 7. Then rename every $temp variable to something that means something.”
That Friday, Erwin closed the PDF for the last time. He didn’t delete it. He renamed it to perl_best_practices_FINAL_v2_FINAL.pdf —a small, ironic act of rebellion.
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.
Chapter 1: Always use use strict; and use warnings; . perl best practices pdf
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.”
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 .
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. The junior dev, remorseful, asked how to help
He thought of the thirty-seven lines where $a held a transaction ID and $b held a customer’s social security number.
After twelve hours of triage, Erwin’s boss slid a printed email across the desk. “The auditors want a ‘Readability and Maintainability Compliance Plan.’ By Friday.”
Chapter 18: Use named regex captures, not $1 , $2 , $3 . Then rename every $temp variable to something that
He found it buried in a forgotten ~/legacy/ebooks/ directory, the PDF metadata timestamped from an era when dial-up was still a noun. He opened it.
One Monday, a junior dev accidentally ran rm -rf logs/ in the wrong terminal and, in a panic, hit Ctrl+C. The script died, but not before corrupting a shared hash of session tokens. The cascade failure was beautiful in its tragedy: garbled trades, mismatched settlements, and a red alert that made the on-call phone sound like a dying fire alarm.
He remembered the line he’d written last year: $data =~ /(.*?),(.*?),(.*?),(.*?),(.*?),(.*?)/; — then six lines of $foo = $4 . It worked. But it was a crime scene.