#!/usr/bin/perl use warnings; use strict; use IPC::Open3; my $pid = open3(\*WRITE, \*READ,0, './myslave1'); #if \*ERROR is false, STDERR is sent to STDOUT while (1){ #send something to slave my $test = time; my $str = $test x 50; print WRITE "$str\n\n\n\n"; #get the answer from slave my $buf; sysread(READ,$buf,1024); print "$test = $buf\n"; sleep 1; } waitpid($pid, 1); # It is important to waitpid on your child process, # otherwise zombies could be created. #### #!/usr/bin/perl use warnings; use strict; use IO::Select; my $timeout = 1; my $s = IO::Select->new(); $s->add( \*STDIN ); while (1) { if ( my @ready = $s->can_read($timeout) ) { # we got input for my $fh (@ready) { my $input; sysread( $fh, $input, 1024); #do some processing, for example syswrite(STDOUT, "processed: $input"); } } }