the finish/disconnect calls ought to be included
Half right. Finish is not the same as disconnect. You remain connected to your backend until you explicitly disconnect (barring network problems, mod_perl, etc) but finish() happens on its own when you retrieve all the data. Read the DBI docs, you only need to call finish() when you execute a query, then disconnect or DESTROY before fully fetching all rows. In the OP's case, he/she does fetch all rows so you were right the first time about finish, there's no reason to call it at the end of this script.
| [reply] |
"InactiveDestroy" (boolean)
The "InactiveDestroy" attribute can be used to disable the database engine related effect of DESTROYing a handle (which would normally close a pre-pared statement or disconnect from the database etc). The default value, false, means a handle will be fully destroyed when it passes out of scope.
It says the above in the DBI docs. If DBD::mysql isn't disconnecting connections when the database handle goes out of scope it is probably a bug.
| [reply] |