in reply to use of $_ is destroying @database ... why?

Try adding local $_; to the beginning of load_tbls() and see if that fixes it.

------
We are the carpenters and bricklayers of the Information Age.

The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.