STDOUT is line buffered by default, meaning you won't see any text until you print a newline to it (or until perl exits and flushes its buffers on its way out):
print "one two three";
sleep 5;
print "four five six\n";
This should stay blank for 5 seconds and then print out all of the text. If you want your prints to STDOUT to appear immediately, set the global variable $| to 1. This sets autoflushing on the currently selected filehandle, which by default is STDOUT:$|++;
print "one two three";
sleep 5;
print "four five six\n";
This should print out the first line, sleep 5 seconds, and then print out the second. Easy!
Keep in mind terminals buffer output for performance reasons, so don't do this if you're printing out a large amount of data. You probably won't hit this wall while you're still learning, though.
Update: Ah, sorry, not quite. The problem is this:
print $client "Username $user Pass $pass";
You don't send through a "\n" at the end. The client is done sending data so it tries to read from the socket again, but the server is still blocking, waiting for a newline that will never arrive. This is what's known as a deadlock. | [reply] [Watch: Dir/Any] [d/l] [select] |