$socket = socketpair($child_fh, $parent_fh, .....); $child_fh -> autoflush(); $parent_fh -> autoflush(); $pid = fork(); .... #### while(1) { my %INFO = (); .... stuff-which-populates-%INFO ... my $dumped = Dumper(\%INFO); print $parent_fh ":MSG:${dumped}:DONE:\n"; sleep 10; } #### state $collected; $num = read($child_fh, $buf, 1e6); if ($num) { $collected .= $buf; if ($collected =~ /:MSG:(.*):DONE:/s) { $dumper = $1; %info = %{ eval $dumper } $collected = ""; } }