Hey Guys

I'm trying to read an answer from an SMTP server via socket.
I'm writing a function wich returns everything till it finds a line which
doesn't begin with 3 digits and a - (/^[\d]{3}-/), but returns this
line,too.
Best I could get till now, is the function below. My question now is, if
that one is good or anybody knows a better solution.(but no Net::SMTP
package or so pls)
I read somewhere that if I use select, i shouldn't use the "readline" with
<FH>, but with sysread() it gets much more complicated I guess...

Thanks
R.B.

Here's the code:
sub getSMTPResponse {
 my ($sock) = @_;
 my ($rin, $response, $i);
 my ($timeout) = 5;

 vec($rin="", fileno($sock), 1) = 1 ; # create bitmask with the socket

 if (select($rin, undef, undef, $timeout)) { # check if socket is ready
  do {
   $i = <SOCK>; # read in a line
   $response .= $i; # append to result
  } while($i =~ /^[\d]{3}-/);
  return($response); # return result
 } else {
  return(undef); # timeout on select occurred
 }
}



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to