in reply to Filehandle woes

$txt = <$fh> reads a line from the filehandle, it doesn't make a copy of it. see 'perldoc perlop' under I/O operators. When you are passing a filehandle to a sub, you should generally say, e.g.: foo(\*SOCK), (except on the built in functions which open the fh like open and socket), but nothing you've described sounds all that bad, except the bare 'SOCK' indicates the lack of 'use strict' which is probably bad. Are you trying to make it work with strict and warnings?

Update: Ok, I've changed my mind. It's probably bad.