Oops, sorry about the mismatched variable names, I was fiddling around to find a fix and thought the solution was to use a reference to "$row". These are only snippets so I understand the confusion. The ultimate goal of my script is to start with an existing hash containing hostnames, and then have threads to go ssh to each hostname, retrieve some information, and then add it to the hash. If this weren't threaded, it would have been simple, but it seems when you spin off a thread, it gets it's own local copy of variables and does not manipulate variables outside of it.