Various suggestions: take a look at the perlcookbook (the code is on-line w/ O'Reilly)
for a nicer socket, using read and an alarm timeout. Try
undefing $/ so you get slurp mode? Make sure the printer
on NT will print normally (odd it would send the name of
the lpt port as its first word, if it was expecting to
be talking w/ a, say, ascii printer) when not redirecting
to a remote 3001 port. Look at Net::Daemon (though I think
the trouble is w/ NT). Maybe you need to ack somehow and
that's what the printer is waiting for ...
a