Actually there is very little relationship to the volume of code and the speed. Even in Perl. At least so says Larry and I happen to agree. Sure using 10,000 lines where 2 will do means you will have a longer compile time but when people think/say slow they are generally referring to runtime. At runtime all that really matters is the Algorithm.
When dealing with slow code making it shorter is not, and never will be the key. Testing it using:
will let you see precisely where the bottlenecks REALLY ARE. Once you have identified the problem areas (usually not where you suspect!) you can apply your optimisation efforts to where you NOW KNOW it will make a difference.
This is not to say that your suggested changes are not good, just based on practical experience of what works.
For example we have the OP using our $dbh but not using that to make the database handle persistent with a $dbh ||= connect Connecting to a database IS slow (comparatively speaking) so doing it once in a given script is more efficient.
Corrected sloppy touch typing tpyos. Cheers liz