use IO::Socket::UNIX; use strict; my $server = new IO::Socket::UNIX -> new ( Local => "$ROOT/envSocket", Type => SOCK_STREAM, Reuse => 1, Listen => 147 ); [ ... error handling ... ] while ( 1 ) { my $client = $server => accept(); if ( defined $client ) { eval { while(<$client>) { $Todo .= $_; chomp($Todo); } } if ( $@ ) { ... } if ( $Todo ) { ... process work ... } close $client; } } #### use IO::Socket::UNIX; use strict; my $server = new IO::Socket::UNIX -> new ( Peer => "$ROOT/envSocket", Type => SOCK_STREAM, Timeout => 10 ); [ ... error handling ... ] print $server "$Todo\n"; shutdown ( $server, 1 ); while ( <$server> ) { $answer .= $_; } shutdown ( $server, 2 ); close $server; ... } #### 50,000 records processed: ( results are number/second ) 1 process | client/server Writes: 2,953 | 1,152 ReadNext: 35,138 | 2,870 ReadPrev: 34,236 | 2,616