Minor nitpick: if you're just preparing a statement,
executing it, and throwing the statement handle away, you
may be better off just using $dbh->do(...)
instead.

And on the subject of your actual point -- I find this
sort of "good programming" arises mostly with orthogonal
code: each separate chunk of your code does one thing,
does it well, does nothing else, and doesn't depend on
anything more than it needs to do its job. Writing
orthogonal code (modules, subroutines, etc) gives you a
good-sized toolbox of code that you can just plug
in and use, and (for me, at least) most of these tools
come by decomposing a problem into chunks, then generalizing
those chunks just a little.