# UNTESTED CODE use IPC::Run qw(start); my $h = start([qw(prog1 file1)], '|', [qw(filter -v), $version], "> $tmpfile", "2>&1"); $h->finish; # returns exist values of each child process which you can use # to find signal that killed each child process my @results = $h->full_results;