use IO::Socket; my $listener = IO::Socket::INET->new ( Listen => 5, LocalAddr => 'localhost', LocalPort => 143, Proto => 'tcp' ); while(defined(my $connection = $listener->accept)) { print "New connection\n"; my $sender = IO::Socket::INET->new("$host:143"); $connection->print($sender->getline()); ## open LOG, '>>imaplog.txt' or die "$!"; while(my $line = $connection->getline()) { my ($id) = $line =~ /^(\w+)/; ## print LOG "Q: $line"; $sender->print($line); my $total_answer = ''; while(my $answer = $sender->getline()) { ## print LOG "A: $answer"; $total_answer .= $answer; #$connection->print($answer); last if($answer =~ /^$id\s+(OK|NO|BAD)/i); } $connection->print($total_answer); } ## close LOG; $sender->close; $connection->close; undef $sender; undef $connection; }