There used to be a memory leak when you used
local on an element of a tied hash, and a
DBI handle is a tied hash. See
Memory Leak Bug. I don't know what Perl version it got fixed,
if it even got fixed, but in case you're forced to use an old perl version like 5.005_03 or 5.6.0, then it's safer to use
eval.
We're talking about a quick fix for a short piece of code that shouldn't be run too often. In such a case, I'm willing to settle for "easy" and "good enough" code. local is easy, emulating local to avoid the meory leak, isn't.