[Chicago-talk] Reading from a socket

Paul Baker pbaker at where2getit.com
Wed Feb 18 10:43:56 CST 2004

On Feb 18, 2004, at 12:32 AM, Jay Strauss wrote:

> Hi, I'm wondering if the is an easier (better) way to read a socket.  
> I'm
> doing (roughly) like below.  I noticed in POE you can just give it a 
> message
> terminator, and if automatically reads it correctly.  Is there a way 
> to do
> this with IO::Socket::INET or maybe with sysread?

Could you set the input record separater to null? Similar to doing 
slurp mode where you set it to undef?

> my $s = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>$host,PeerPort
> =>$port);
> my $field = receive;
> #   Read the bytes of the line one at a time until we find an ascii "0"
> #   which the server uses to indicate end of message.  Build up the 
> return
> #   byte by byte and return it.
> sub receive {
>     my ($result,$byte);
	{ local $/ = char(0); $result = <$s>; }

>     return $result;
> }

I don't know if that would work, but it seems to me to be the perlish 
way to do it.

Paul Baker

"Reality is that which, when you stop believing in it, doesn't go away."
          -- Philip K. Dick

GPG Key: http://homepage.mac.com/pauljbaker/public.asc

More information about the Chicago-talk mailing list