Beefy Boxes and Bandwidth Generously Provided by pair Networks kudra
"be consistent"
 
PerlMonks  

Re^7: exchanging strings on the network

by mattk (Pilgrim)
on May 10, 2005 at 11:34 UTC ( #455523=note: print w/ replies, xml ) Need Help??


in reply to Re^6: exchanging strings on the network
in thread exchanging strings on the network

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.


Comment on Re^7: exchanging strings on the network
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://455523]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2014-04-18 01:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (460 votes), past polls