I'm stumped on how to read from a filehandle, where I don't know how many lines are waiting for me.
Consider this: mickey> telnet a.mx.example.com 25 Trying 10.0.0.1... Connected to a.mx.example.com. Escape character is '^]'. 220-a.mx.example.com ESMTP 220- EXAMPLE.COM does not authorize the use of its proprietary computers 220- and computer networks to accept, transmit, or distribute unsolicited 220 bulk e-mail sent from the internet. I want to save the entire banner, and want to start talking to the smtp server. I can not assume the banner is a single line, and I cannot assume how many lines the banner will be. on the standard that the last line of the response from a SMTP server has a space after the code (instead of a dash), using IO::Socket, i've tried if($sock){ my $banner; while(<$sock>){ if(/^220\s/){ chomp; $banner .= $_; last; }else{ $banner .= $_; } } print "banner is: $banner\n"; } but that is only a hack for a multi-line SMTP banner. Is there a way to tell if i have data in <$sock> waiting for me, without actually reading from the file handle (which could cause it to wait for input) ? I've looked at Net::SMTP, but see that it incorrectly assumes only the first line is the banner. Note that I'm not looking for a solution for only SMTP (where the /200\s/ give me a way to cheat), but a solution to the problem as a whole. Jeremy Kister http://jeremy.kister.net/ -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>