OK, its a real clumsy fudge but it seems to stop the hanging. With this modification in place, my Perl/R script misses some tests out (probably the ones it would have hung on)--but with a properly designed Perl script you can catch which ones it missed and have another go at the end.
(The script I am currently working on with this is a DBI script, uses a MySQL database ENUM column to record whether all of the required tests have been carried out).
In
pipe.pm, I changed
if ( $x == 20 ) {
my (undef , $data) = $this->read_processR ;
if ( $data =~ /\s$n\s+\.\.\.\s+\// ) { last ;}
$x = 0 ;
to
if ( $x == 20 ) {
my (undef , $data) = $this->read_processR ;
last;
$x = 0 ;