That depends. In this case my consideration was that I
did not want someone thinking that they should access
that variable directly, and making the connection logic
implicit to needing the database simplified initialization
logic.
Making it impossible to even try to make that mistake
makes it less likely that I will. :-)
Comment on RE (5): passing DBI database handles to subroutines