The only problem I had with your code was the sleep delay was too long. :) The script was executing over tens of thousands of files so in the end I used the implementation below.
sub executeTimed{
my $cmd = shift;
$|++;
my @results :shared;
my $pid :shared;
async {
$pid = open my $fh, "$cmd |" or die "$!, $^E";
@results = <$fh>;
}->detach;
select(undef, undef, undef, 0.08);
my $test = kill (0, $pid);
if($test){
kill (3, $pid);
push(@results, "Function timed out.");
}
return pop(@results);
}
Thanks again for all replies.
I was looking to use default active state perl package and was unsure if ipc-run would execute.
Nemo